#include <iostream>

#include <cstdlib>

class IntArray {

 public:

  IntArray(const IntArray &rhs) {

    size_ = rhs.size_;

    data_ = new int[rhs.size_];

    for (int i = 0; i < rhs.size_; ++i) {

      data_[i] = rhs.data_[i];

    }

  }

  explicit IntArray(int n) {

    size_ = n;

    data_ = new int[n];

  }

  IntArray(const IntArray &x, int begin, int end);

  ~IntArray() {

    delete [] data_;

  }

  int Size() const { return size_; }

  const IntArray Slice(int begin, int end) const;

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

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

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

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

  const IntArray &operator=(const IntArray &rhs) {

    if (this != &rhs) {

      delete [] data_;

      size_ = rhs.size_;

      data_ = new int[rhs.size_];

      for (int i = 0; i < rhs.size_; ++i) {

        data_[i] = rhs.data_[i];

      }

    }

    return *this;

  }

 private:

  int size_;

  int *data_;

};

 

IntArray::IntArray(const IntArray &x, int begin, int end) {

  size_ = end-begin;

  data_ = new int[size_];

  for(int i=0; i<size_ ;++i){

    data_[i] = x.At(i+begin);

  }

}

 

const IntArray IntArray::Slice(int begin, int end) const {

  IntArray TempIntArray(end-begin);

  for(int i=0; i<end-begin ;i++){

    TempIntArray.At(i) = this->At(i+begin);

  }

  return TempIntArray;

}

 

std::ostream &operator<<(std::ostream &lhs, const IntArray &rhs) {

  for (int i = 0; i < rhs.Size(); ++i) {

    if (i > 0) lhs << ' ';

    lhs << rhs[i];

  }

  return lhs;

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

阿洲程式天地

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