类模板已经定义,需要模板参数列表?
# include<iostream>
using namespace std;
template <class T>
class SeqQueue{
private:
T* elements; //存放队列元素的数组
int rear,front; //队尾指针和对头指针
int maxSize; //队列可容纳的最大元素个数
public:
SeqQueue(int sz):rear(0),front(0),maxSize(sz){
elements=new T[maxSize];
}
~ SeqQueue(){ delete[]elements;} //析构函数
bool EnQueue(const T& x){ //进队函数
if(isFull()) return false;
else
elements[rear]=x;
rear=(rear+1)%maxSize; //加一再取余是为了rear指向队列最后一个元素(下标maxSize-1),再进一下标就到了0
return true;
}
bool DeQueue(T& x){
if(isEmpty()) return false;
else
x=elements[front];
front=(front+1)%maxSize;
return true;
}
bool getFront(T& x){
if(isEmpty()) return false;
else
x=elements[front];
return true;
}
void makeEmpty(){front=rear=0;} //把队置空
bool isEmpty(){ return (front==rear)?true:false; } //判断队空
bool isFull(){ return ((rear+1)%maxSize==front)?true:false; } //判断队满
int getSize(){ return (rear-front+maxSize)%maxSize; } //求队中元素个数
friend ostream& operator<<(ostream& ostr,SeqQueue<T>& Q); //输出运算符重载
};
template<class T>
ostream& operator<<(ostream& ostr,SeqQueue<T>& Q){
ostr<<"front="<<Q.front<<" "<<"rear="<<Q.rear<<endl;
for(int i=Q.front;i!=Q.rear;i=(i+1)%Q.maxSize)
ostr<<i<<": "<<Q.elements[i]<<endl;
return ostr;
}

请帮我解答一下
...全文
相关推荐
C++中的函数模板和类模板
函数模板的关键字是`template`,后面跟着模板参数列表,通常使用`<typename T>`表示一个未指定类型的参数。在函数模板的定义中,`T`将被实际传入的类型替换。
33、列表类模板定义:创建灵活高效的列表数据结构
本文详细介绍了C++中列表类模板的定义和使用,包括基本操作如添加、删除、查找和清空等,以及高级特性如模板特化、自定义比较函数、尾插法、双向链表和模板类模板参数。通过这些内容,读者可以深入理解并灵活应用列表类模板,提高代码复用性和效率。
C++中的模板template小结
**模板类的成员函数**:类模板的成员函数也可以在类外部定义,只需提供相同的模板参数列表,就像定义普通的函数模板一样。
c++模板学习
类模板允许我们在一个类定义中使用模板参数,从而可以创建处理多种数据类型的类实例。
c++template 模板介绍
函数模板声明与定义函数模板的声明包括模板参数列表,如 `template <typename T>`,以及函数的返回类型和参数列表。函数模板的定义则与普通函数类似,但要在函数声明前加上模板参数列表。


