#include#include using namespace std; template class Vector { private: int capacity_; int size_; T *data_; void deep_copy_(int n) { T *tmp_dat = new T[n]; for (int i = 0; i < size_; ++i) tmp_dat[i] = data_[i]; delete[] data_; data_ = tmp_dat; } void fit_(int n) { if (capacity_ >= n) return; while (capacity_ < n) capacity_ <<= 1; deep_copy_(capacity_); } public: Vector(int n = 0, int num = 0) : size_(n), capacity_(n > 8 ? n : 8) { data_ = new T[capacity_]; for (int i = 0; i < size_; ++i) data_[i] = num; } ~Vector() { delete[] data_; } void resize(int n = 0, int num = 0) { fit_(n); while (size_ < n) data_[size_++] = num; } void push_back(int num) { fit_(size_ + 1); data_[size_++] = num; } void pop_back() { if (size_) size_--; } public: void reserve(int n) { if (n > size_) capacity_ = n, deep_copy_(capacity_); } int capacity() { return capacity_; } void clear() { size_ = 0; } int size() { return size_; } bool empty() { return size_ == 0; } public: T &front() { return data_[0]; } T &back() { return data_[size_ - 1]; } T &operator[](int i) { return data_[i]; } public: class Iterator { private: T *p_; public: }; T *begin() { return data_; } T *end() { return data_ + size_; } }; int main() { Vector a; // a.reserve(7); for (int i = 0; i < 1000; ++i) { a.push_back(i); printf("%d %dn", i, a.capacity()); } }



