簡體   English   中英

當隊列不為空時,queue.front()上的“ deque迭代器不可解除”

[英]“deque iterator not dereferencable” at queue.front() when queue is not empty

我敢肯定這個問題會被問到很多-實際上,我在搜尋問題時發現了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迭代器”錯誤。

使用queue.front()時,還有哪些其他問題可能會觸發此類錯誤?

我什至嘗試將第一行注釋掉-消息像預期的那樣彈出。

謝謝你的時間。

對不起,這是我的一個愚蠢的錯誤。 我在構造函數的某處有一個memset(),當我今天下午更改類型時,該隊列用空堆棧的數據覆蓋了隊列。

經驗教訓,並感謝您的答復!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM