- 类模板
C++除了支持函数模板,还支持类模板,此时类模板中定义的类型参数可以用在类声明和类实现中,类模板的目的同样是将数据的类型参数化
看下面的程序
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位
template <typename T>
class Queue{
private:
int size;
int max_size;
T *tp;
int start;
int end;
public:
Queue(int size){
max_size=size;
tp=new T[size];
this->size=0;
this->start=0;
this->end=-1;
}
~Queue(){
delete tp;
}
T push(T dat){
if(size==max_size){
printf("stack is overflow!\n");
exit(1);
}
end++;
end%=max_size;
tp[end]=dat;
size++;
return dat;
}
T pop(){
if(size==0){
printf("stack is empty!\n");
exit(1);
}
T temp=tp[start++];
start%=max_size;
size--;
return temp;
}
int length(){
return size;
}
void travel(){
int len=size;
int start=this->start;
while(len--){
printf("%d ",tp[len]);
start%=max_size;
}
printf("\nsize:%d\n",size);
printf("--------------\n");
}
};
int main(){
Queue<int> queue(30);
for(int i=1;i<=13;i++){
queue.push(i);
}
queue.travel();
int count=0;
while(queue.length()){
count++;
int temp=queue.pop();
if(count%3==0){
printf("pop:%d\n",temp);
}else{
queue.push(temp);
}
}
queue.travel();
return 0;
}