template <typename Object> class Vector { public: explicit Vector(int initSize = 0) : theSize(initSize), theCapacity(initSize + SPARE_CAPACITY) { objects = new Object[theCapacity]; } Vector(const Vector& rhs) : objects(NULL) { operator=(rhs); } ~Vector() { delete[] objects; } void operator= (const Vector& rhs) { if (this != &rhs) { delete[] objects; theSize = rhs.theSize; theCapacity = rhs.theCapacity; objects = new Object[capacity()]; for (int i = 0; i < size(); i++) objects[i] = rhs[i]; } } void reserve(int newCapacity) { if (newCapacity > theCapacity) { Object* oldArray = objects; objects = new Object[newCapacity]; for (int i = 0; i < size(); i++) objects[i] = oldArray[i]; theCapacity = newCapacity; delete[] oldArray; } } Object& operator[](int index) { return objects[index]; } const Object& operator[](int index) const { return objects[index]; } bool empty() const { return size() == 0; } int size() const { return theSize; } int capacity() const{ return theCapacity; } void push_back(const Object& object) { if (capacity() == size()) { reserve(2 * theCapacity + 1); } objects[theSize++] = object; } void pop_back() { theSize--; } const Object& back() const{ return objects[theSize - 1]; } typedef Object* iterator; typedef const Object* const_iterator; iterator begin() {return &objects[0];} const_iterator begin() const{return &objects[0];} iterator end(){return &objects[size()];} const_iterator end() const{return &objects[size()];} enum {SPARE_CAPACITY=16}; private: int theSize; int theCapacity; Object* objects; };
代码来自 《数据结构与算法分析:C++描述》
原文链接: https://www.cnblogs.com/airfy/p/12588549.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/338398
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!