关于使用list链表制作队列的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:53:45
大体代码如下:
#include....
...
typedef int T;
class Queue
{ list<T> l;
public:
void push(const T& t){ l.insert(l.end(), t); }
void pop(){ l.erase(l.begin());}
T front(){ return *(l.begin());}
T back(){ return *(l.end()); } //这里不是返回最后一个元素的值吗?
void clear(){ l.clear(); }
int size(){ return l.size(); }
};
int main()
{
Queue B;
cout<<B.back()<<endl;

}
return 0;
}
为什么B.back()的值是8
应该是很简单的,只是我太笨,希望大家指导下
上面代码main里面多了个括号是不小心敲错的,不要去管它 ,链表使用的是标准库里的

Queue B;
1 你构造了一个Queue对象B,但是你并没有往B里面push任何值,其应该是空的,不管你取其中哪个值,都是未知的,不知道你所说的8是哪里来的。
2 在模版类里面,里面的end()返回的是你所存储的list表中的最后一个元素的下一个位置,指向的是未知的存储,所以你返回的end()是不正确的。

有问题,请留言