0

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

如何保留迭代器?任何帮助将非常感激。

4

2 回答 2

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

   return fifo.back();
}
于 2012-07-21T11:04:53.907 回答
0

container.end()永远不可取消引用。

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

于 2012-07-21T11:06:58.447 回答