我的vector实现
来源:互联网 发布:单片机闭环控制 编辑:程序博客网 时间:2024/06/07 20:55
//zhaodw@nju#include<iostream>#include<stdlib.h>using namespace std;typedef unsigned int _size_t;template<class T>class vect{public: vect(){ init(); }; ~vect(){free _begin;}; vect(T t){ init(); push_back(t); }; void init(){ size = 0; _begin = NULL; _end = NULL; reserve = 0; }; T* push_back(T t){ if(size + 1 > reserve){ alloc(size * 2 + 1); } *(_end) = t; _end++; size++; return _begin; }; T pop_back(){ if(size == 0) return (T)0; size--; _end--; return *_end; }; T* begin() const {return _begin;}; T* end() const {return _end;}; _size_t getSize() const {return size;}; _size_t getReserve() const {return reserve;}; typedef T* iterator;private: bool alloc(_size_t s){ T* _r = _begin; _end = _begin + size; _begin = (T*)malloc(sizeof(T) * s); if(_begin){ size_t _iter = 0; for(;_iter + _r < _end;_iter++) *(_begin + _iter) = *(_r + _iter); free(_r); _end = _begin + size; reserve = s; return true; } else return false; }; _size_t size; _size_t reserve; T* _begin; T* _end;};int main(){ vect<char> v(51); v.push_back(52); v.push_back(53); v.push_back(54); v.push_back(55); v.push_back(56); v.pop_back(); v.push_back(58); vect<char>::iterator iter = v.begin(); for(;iter < v.end();iter++){ cout<<*iter<<endl; } // cout<<*(v.begin())<<endl; return 0;}