#include <iostream>

#include <cstdlib>

class IntVector {

 public:

  IntVector();

  IntVector(const IntVector &rhs);

  explicit IntVector(int n);

  ~IntVector() { delete [] data_; }

  int Size() const { return size_; }

  void Resize(int n);

  int &At(int i)      { return data_[i]; }

  int At(int i) const { return data_[i]; }

  void Insert(int pos, int elem) {

    IntVector TempIntVector(this->size_);

    for (int i = 0; i < this->size_; ++i) TempIntVector.data_[i] = this->data_[i];

    delete [] this->data_;

    size_++;

    data_ = new int[size_];

    for (int i = 0; i < pos; ++i) data_[i] = TempIntVector.data_[i];

    this->At(pos) = elem;

    for (int i = pos+1; i < size_; ++i) data_[i] = TempIntVector.data_[i-1];

  }

  void Erase(int pos) {

    IntVector TempIntVector(this->size_);

    for (int i = 0; i < this->size_; ++i) TempIntVector.data_[i] = this->data_[i];

    delete [] this->data_;

    size_--;

    data_ = new int[size_];

    for (int i = 0; i < pos; ++i) data_[i] = TempIntVector.data_[i];

    for (int i = pos; i < size_; ++i) data_[i] = TempIntVector.data_[i+1];

  }

  void PushFront(int elem) {

    IntVector TempIntVector(this->size_);

    for (int i = 0; i < this->size_; ++i) TempIntVector.data_[i] = this->data_[i];

    delete [] this->data_;

    size_++;

    data_ = new int[size_];

    for (int i = 0; i < size_-1; ++i) data_[i+1] = TempIntVector.data_[i];

    this->At(0) = elem;

  }

  void PopFront() {

    IntVector TempIntVector(this->size_);

    for (int i = 0; i < this->size_; ++i) TempIntVector.data_[i] = this->data_[i];

    delete [] this->data_;

    size_--;

    data_ = new int[size_];

    for (int i = 0; i < size_; ++i) data_[i] = TempIntVector.data_[i+1];

  }

    void Clear() {

    for (int i = 0; i < this->size_; ++i) data_[i] = 0;

  }

  void PushBack(int elem) {

    IntVector TempIntVector(this->size_);

    for (int i = 0; i < this->size_; ++i) TempIntVector.data_[i] = this->data_[i];

    delete [] this->data_;

    size_++;

    data_ = new int[size_];

    for (int i = 0; i < size_-1; ++i) data_[i] = TempIntVector.data_[i];

    this->At(size_-1) = elem;

  }

  void PopBack() {

    IntVector TempIntVector(this->size_);

    for (int i = 0; i < this->size_; ++i) TempIntVector.data_[i] = this->data_[i];

    delete [] this->data_;

    size_--;

    data_ = new int[size_];

    for (int i = 0; i < size_; ++i) data_[i] = TempIntVector.data_[i];

  }

  int &operator[](int i)      { return At(i); } 

  int operator[](int i) const { return At(i); } 

 

 private:

  int size_;

  int *data_;

};

文章標籤
全站熱搜
創作者介紹
創作者 阿洲 的頭像
阿洲

阿洲程式天地

阿洲 發表在 痞客邦 留言(0) 人氣(713)