// FILE ex_vector1.cc #include #include #include using namespace std; /// a vector of double entries class MyVector { private: int size_; // size/dimension of the vector double* data_; // array of the entries public: // (default) constructor MyVector(int size=0) { size_ = size; data_ = new double[size_]; } // destructor ~MyVector () { delete[] data_; } // copy constructor MyVector (const MyVector& v) { size_ = v.size_; data_ = new double[size_]; memcpy (data_, v.data_, size_ * sizeof(double)); } // assignment MyVector& operator= (const MyVector& v) { if (this != &v) { if (size_ != v.size_) { delete[] data_; size_ = v.size_; data_ = new double[size_]; } memcpy (data_, v.data_, size_ * sizeof(double)); } return *this; } // get size int size () const { return size_; } // set size void setSize (int size) { if (size_ != size) { delete[] data_; size_ = size; data_ = new double[size_]; } } // const element access double operator[] (int i) const { assert (0 <= i && i < size_); return data_[i]; } // element access by reference double& operator[] (int i) { assert (0 <= i && i < size_); return data_[i]; } void scale (double factor) { for (int i=0; i 0) os << data_[0]; for (int i=1; i