我的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;}