Vector的简单C++实现
2014-06-29 22:52
295 查看
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(void) {delete[] objects;} const Vector &operator= (const Vector & rhs) { if(this != &rhs) { delete[]objects; theSize = rhs.size(); theCapacity = rhs.theCapacity; objects = new Object[capacity()]; for(int k=0;k<size();k++) objects[k] = rhs.objects[k]; } return *this; } void resize(int newSize) { if(newSize > theCapacity) { reserve(newSize*2+1); theSize = newSize; } } void reserve(int newCapacity) { if(newCapacity < theSize) return; Object *oldArray = objects; objects = new Object[newCapacity]; for(int k=0;k<theSize;k++) objects[k] = oldArray[k]; 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 & x) { if(theSize == theCapacity) reserve(2*theCapacity + 1); objects[theSize++] = x; } 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; };
相关文章推荐
- SLT容器之vector简单实现C++运行时多态
- c++ stl库 vector简单的实现
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- Vector3的C++简单实现。
- 必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- c++vector简单实现
- 简单数据结构之 vector 栈(C++ vector 实现)
- c++ stl库 vector简单的实现
- 1_c++实现简单vector
- 仿c++的vector简单实现
- 简单数据结构之顺序表(C++ vector 实现)
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
- c++ vector 简单实现。
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)
- c/c++ vector 的简单实现
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
- C++ vector 的简单实现