template<classT> class Node{
private:
intxiabiao; //指向当前位置的下一个位置
T dataarray[50];
public:
Node(){
xiabiao=0;
}
voidset(T item){
if(xiabiao==50){
xiabiao=0;
throwSpecialException(); //抛出了个类
}
dataarray[xiabiao]=item;
xiabiao++;
}
T get(int index){
returndataarray[index];
}
voidupdate(int index,T data){
dataarray[index]= data;
}
};
class SpecialException{};
template<classT> class NewVector{
private:
Node<T>*shuzuchi[10]; //指针池
intshuzhu;
public:
NewVector(){
shuzhu= 0;
shuzuchi[shuzhu]=newNode<T>;
}
voidset(T item){
try{
shuzuchi[shuzhu]->set(item);
}catch(SpecialException){
shuzuchi[++shuzhu]=newNode<T>;
shuzuchi[shuzhu]->set(item);
}
}
T get(int index){
returnshuzuchi[index/50]->get(index%50);
}
voidupdate(int index,T data){
shuzuchi[index/50]->update(index%50,data);
}
//不提供删除操作,因为删除操作太复杂了。可以进行数据的覆盖
// Tdeletedata(int index){
// intmid=get( index );
// update(index , 0 );
// returnmid;
// }
};