STL列表迭代问题

时间:2012-07-21 11:02:53

标签: c++ list stl

我正在使用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。

如何保存迭代器? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

Flit *Buffer::peek_last_flit(void) const {
   if (fifo.empty())
       return 0;

   return fifo.back();
}

答案 1 :(得分:0)

container.end()永远不会被解除歧视。

您需要--container.end()才能获得最后一个元素。