首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STL列表迭代问题

STL列表迭代问题
EN

Stack Overflow用户
提问于 2012-07-21 19:02:53
回答 2查看 89关注 0票数 0

我正在处理一个STL列表,并且在尝试检索最后一个元素时不断收到错误。我有一节课

代码语言:javascript
复制
class Buffer {
private:
  list<Flit*> fifo;
  ...

public:
  ...
Flit *peek_last_flit(void) const;

  ...
};

和实现

代码语言:javascript
复制
Flit *Buffer::peek_last_flit(void) const {
   if (fifo.empty())
       return 0;

   Flit *f = *(fifo.begin());
   return f;
}

我有一个类似的实现,它返回列表的头部。

代码语言:javascript
复制
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。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-21 19:04:54

代码语言:javascript
复制
Flit *Buffer::peek_last_flit(void) const {
   if (fifo.empty())
       return 0;

   return fifo.back();
}
票数 3
EN

Stack Overflow用户

发布于 2012-07-21 19:06:58

container.end()永远不会被解除引用。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11591599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档