我正在处理一个STL列表,并且在尝试检索最后一个元素时不断收到错误。我有一节课
class Buffer {
private:
list<Flit*> fifo;
...
public:
...
Flit *peek_last_flit(void) const;
...
};和实现
Flit *Buffer::peek_last_flit(void) const {
if (fifo.empty())
return 0;
Flit *f = *(fifo.begin());
return f;
}我有一个类似的实现,它返回列表的头部。
Flit *Buffer::peek_flit(void) const {
if (fifo.empty())
return 0;
Flit *f = *(fifo.begin());
return f;
}我该如何处理这个问题(我调用了这两个过程,但当我调用Peek_last_flit时,我得到了一条调试断言失败消息: Expression: list iterator not dereferencable。
如何保留迭代器?任何帮助都将不胜感激。
发布于 2012-07-21 19:04:54
Flit *Buffer::peek_last_flit(void) const {
if (fifo.empty())
return 0;
return fifo.back();
}发布于 2012-07-21 19:06:58
container.end()永远不会被解除引用。
您需要--container.end()来获取最后一个元素。
https://stackoverflow.com/questions/11591599
复制相似问题