对C++ vector容器重写
头文件
#ifndef _vec_h
#define _vec_h
#include<memory>
#include<algorithm>
//#include<cstddef>
template<class T> class Vec{
public:
typedef T* iterator;
typedef const T* const_iterator;
typedef size_t size_type;
Vec() {create(); }
explicit Vec(size_type n,const T& t=T()) {create(n,t);}
Vec(const Vec& v) {create(v.begin(),v.end());} //复制构造函数跟构造函数一样,没有返回值
Vec& operator=(const Vec&); //类外定义
~Vec() {uncreate();}
T& operator[](size_type i) {return data[i];}
const T& operator[](size_type i)const {return data[i];}
iterator begin() {return data; }
const_iterator begin() const{return data; }
iterator end() {return avail; }
const_iterator end() const {return avail; }
size_type size() const{return avail-data;}
void push_back(const T&);
private:
iterator data,avail,limit;
std::allocator<T> alloc;
void create();