主函数:
#include"vector.h"
#include<iostream.h>
template<class Iterator>//在指定范围内输出元素
int main()
{
return 0;
}
头文件中:
#ifndef VECTOR_H
#define VECTOR_H
#include<iostream.h>
#include<stdlib.h>
template<class T>
class Vector
{
private:
T*data;//指向动态数组指针
int size;//数组的数据元素个数
int max;//数组容量
void Error(const char*cs)const{cout<<cs<<endl;exit(1);}//错误信息报告
public:
enum{SPACE_MAX=16};
explicit Vector(int n=0):size(0),max(n+SPACE_MAX)
{
if(max>0)
data=new T[max];
}
Vector(const Vector&v):data(NULL),max(0){operator=(v);}//复制构造函数
~Vector(){delete[]data;}
Vector&operator=(const Vector<T>&v);//复制赋值函数
T&operator[](int id){return data[id];}//下标运算符函数
const T&operator[](int id)const{return data[id];}//常量型下标运算符函数
bool Empty()const{return size==0;}//判空
int Size()const{return size;}//求数据个数
int Max()const{return max;}//求数组容量
void Clear(){size=0;}//清空删除所有数据元素
typedef T*iterator;//迭代器
typedef const T*const_iterator;//const型迭代器
const_iterator Begin()const{return data;}
iterator Begin(){return data;}//返回左边界的指针,return &data[0]
iterator End(){return data+size;}//返回右边界的指针,return &data[size]
const_iterator End()const{return data+size;}
const T& Front()const{return data[0];}//返回首元素的引用
T& Front(){return data[0];}
const T& Back()const{return data[siza-1];}//返回尾元素的引用
T& End(){return data[size-1];}
void Push_back(const T&item){data[size++]=item;}//尾插。相当于InsertRear
void Pop_back(){size--;}//尾删
void Reserve(int newMax);//扩大数组容量为newMax,保留原来数据
void Resize(int newSize,const T& item=T());
//add the numbers of database to newsize,store the old one,the rest of data is item
iterator Insert(iterator itr,const T& item);//在迭代器interator的位置上插入item
iterator Erase(iterator itr);//在迭代器iterator的位置上删除元素
};
template<class T>
Vector<T>&Vector<T>::operator=(const Vector<T>&v)//复制赋值函数
{
if(max!=v.Max())
{
delete[]data;
max=v.max;
data=new T[max];
}
size=v.size();
for(int i=0;i<size;++i)
data[i]=v.data[i];
return *this;
}
#endif