【问题标题】:"deque iterator not dereferencable" at queue.front() when queue is not empty当队列不为空时,queue.front() 处的“deque iterator not dereferencable”
【发布时间】:2014-05-19 16:31:13
【问题描述】:

我确信这个问题被问了很多 - 事实上,我在谷歌搜索问题时找到了 10 多个答案。但是他们都指出当队列为空时不要调用 queue.front()。

我有以下代码:

std::queue<Message*> MessageQ;    //declaring  the queue
//...
MessageQ.push(Msg);  //filling the Queue
//...
if (!MessageQ.empty())
{
    Message* ToReturn = MessageQ.front();
    MessageQ.pop();
    return ToReturn;
}
return 0;

我在 .front() 行收到“deque iterator not dereferencable”错误。

在使用 queue.front() 时还有哪些其他问题可能会触发此类错误?

我什至尝试评论前线 - 消息按原样弹出。

感谢您的宝贵时间。

【问题讨论】:

  • 您的问题将受益于Minimal, Complete, Verifiable Example。请创建一个,以便我们更好地帮助您。您甚至可以在创建时自己找到答案。
  • MessageQ 是如何在您的代码中准确声明的?
  • MessageQ 的类型是什么?它包含什么类型的项目?
  • 如果Message是一个迭代器,不要声明Message * ToReturn,而只声明Message ToReturn
  • 您是否在一个线程中将内容推入队列,然后在另一个线程中弹出?

标签: c++ queue std


【解决方案1】:

对不起,这是我的一个愚蠢的错误。我在构造函数的某个地方有一个 memset(),它用空堆栈的数据覆盖了队列,因为我今天下午更改了类型。

经验教训,感谢您的回答!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2017-09-28
  • 2012-11-09
  • 1970-01-01
  • 2018-04-17
  • 2013-06-25
  • 1970-01-01
相关资源
最近更新 更多