我正在使用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时,我得到一个调试asserion失败消息: 表达式:列出迭代器而不是dereferencable。
如何保存迭代器? 任何帮助将不胜感激。
答案 0 :(得分:3)
Flit *Buffer::peek_last_flit(void) const {
if (fifo.empty())
return 0;
return fifo.back();
}
答案 1 :(得分:0)
container.end()
永远不会被解除歧视。
您需要--container.end()
才能获得最后一个元素。