// Vector.h // // A class vector similar to the STL container vector. // Version 1.0 // // Included in this version: // vector(), vector(n), vector(init_list), ~vector() // size(), indexing operator #ifndef _Vector_h_ #define _Vector_h_ #include #include namespace CS142 { template class vector { public: vector() : buffer_(nullptr), size_(0) {} explicit vector(int n); vector(std::initializer_list init_list); ~vector() { delete [] buffer_; } int size() const { return size_; } T & operator[](int i) { return buffer_[i]; } const T & operator[](int i) const { return buffer_[i]; } private: T * buffer_; // points to a dynamically allocated array that // contains the vector elements int size_; // the number of elements in the vector (and the size of // the buffer) }; template vector::vector(int n) { if (n == 0) { buffer_ = nullptr; size_ = 0; } else { buffer_ = new T[n]{}; size_ = n; } } template vector::vector(std::initializer_list init_list) { if (init_list.size() == 0) { buffer_ = nullptr; size_ = 0; } else { buffer_ = new T[init_list.size()]; std::copy(init_list.begin(), init_list.end(), buffer_); size_ = init_list.size(); } } } // namespace CS142 #endif