<分区>
尝试在 C++ 中实现通用队列时,我遇到了一个非常具体的问题。这是代码:
template <class T> class Queue {
private:
T * queue;
int front;
int back;
int MAX_SIZE;
public:
Queue(){
Queue(SOME_PREDEFINED_CONSTANT);
}
Queue(int size){
queue = new T[size];
MAX_SIZE = size;
front = 0;
back = 0;
cout << "inside constructor:" << " back= " << back << " front=" << front << endl;
}
void push(const T entry){
if(back < MAX_SIZE){
queue[back] = entry;
back++;
}
}
T peek(){
return queue[front];
}
void pop(){
if(size() > 0){
front++;
}
if(front==back){
front = 0;
back = 0;
}
}
int size(){
cout << "size:" << " back=" << back << " front=" << front << endl;
return (back-front);
}
};
当我初始化队列时,像这样:Queue <int> q;
,我得到了 back
的正确值和 front
在构造函数中;输出:
inside constructor: back=0 front=0
但是当我询问队列的大小时,像这样:q.size()
(没有任何推/弹出操作),我得到非常奇怪的值 back
和 front
.一个示例输出:
size: back=32766 front=-746749592
谁能指出我在这里做错了什么?