当queue不为空时,queue.front()中的“deque iterator not dereferencable”

时间:2014-05-19 16:31:14

标签: c++ queue std

我确信这个问题会被问到很多 - 实际上我在搜索问题时发现了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;

我得到了#34; deque迭代器而不是dereferencable&#34; .front()行的错误。

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

我甚至尝试过评论前线 - 消息会像它应该弹出一样。

感谢您的时间。

1 个答案:

答案 0 :(得分:4)

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

经验教训,谢谢你的回答!