慕粉13793240057
2018-03-21 23:46
使用类模板的话,遍历的输出应该怎么写,因为输出int和类的方法不一样 请大神告知
不好意思,第85行的QueueEmpty()函数调用多了一对括号。
void MyQueue::QueueTraverse(){
for(int i=m_iHead; i < m_iHead + m_iQueueLen; i++){
m_pQueue[m_iHead].printInfo();
}
}
//其中printInfo()是自定义类型实现的函数,例如
void Customer::printInfo(){
cout << ”姓名: " << m_strName << endl;
cout << "年龄: " << m_iAge << endl;
cout << endl;
}再贴上一个我实现的吧,直接复制下面的代码可运行。
#include <iostream>
#include <string>
using namespace std;
class Customer{
public:
Customer(){
//需要默认构造函数
}
Customer(string name, int age){
m_strName = name;
m_iAge = age;
}
void printInfo() const{
cout << "姓名: " << m_strName << endl;
cout << "年龄: " << m_iAge << endl;
cout << endl;
}
private:
string m_strName;
int m_iAge;
};
template <class T>
class MyQueue{
public:
MyQueue(int queueCapacity){
m_iQueueCapacity = queueCapacity;
m_iQueueLen = 0;
m_iHead = 0;
m_iTail = 0;
m_pQueue = new T[queueCapacity];
}
~MyQueue(){
delete[] m_pQueue;
}
void QueueClear(){
m_iQueueLen = 0;
m_iHead = 0;
m_iTail = 0;
}
bool QueueEmpty() const{
if(m_iQueueLen==0){
return true;
}
else{
return false;
}
}
bool QueueFull() const{
if(m_iQueueLen==m_iQueueCapacity){
return true;
}
else{
return false;
}
}
bool EnQueue(T element){
if(QueueFull()){
return false;
}
else{
m_pQueue[m_iTail] = element;
m_iTail ++;
m_iTail = m_iTail % m_iQueueCapacity;
m_iQueueLen ++;
return true;
}
}
bool DeQueue(T &element){
if(QueueEmpty()()){
return false;
}
else{
element = m_pQueue[m_iHead];
m_iHead ++;
m_iHead = m_iHead % m_iQueueCapacity;
m_iQueueLen --;
return true;
}
}
void QueueTraverse(){
for(int i = m_iHead; i < m_iHead + m_iQueueLen; i++){
m_pQueue[i%m_iQueueCapacity].printInfo();
}
}
private:
T* m_pQueue;
int m_iHead;
int m_iTail;
int m_iQueueLen;
int m_iQueueCapacity;
};
int main(int argc, char *argv[]) {
MyQueue<Customer>* p = new MyQueue<Customer>(4);
p->EnQueue(Customer("imooc", 20));
p->QueueTraverse();
}
template <class T>
void MyQueue::QueueTraverse()
{
// 里面T即你需要的类型
}
template <class T>
void MyQueue::QueueTraverse(){
//some code
}
数据结构探险—队列篇
110168 学习 · 183 问题
相似问题