#include <queue>
#include <stdio.h>
int main()
{
std::queue<int> q;
printf("%d\n", q.size());
q.pop();
q.pop();
printf("%d\n", q.size()); // ===> prints -2
return 0;
}
0
A
回答
3
在空容器上調用queue.pop()
會產生未定義的行爲,因此在完成此操作後,您無法真正依賴於有關程序的任何內容。
當您調用未定義的行爲時,讓您的隊列可能受損並報告大小(-1)爲正確/好/不好。
2
這是未定義的行爲從空隊列中彈出。
未定義behavoir可以包括很多事情,例如格式化你的硬盤(不太可能!),使惡魔從你的鼻子出現(也不可能),或有時做的正是你所期望的(可能和非常令人擔憂)
你還打印一個size_t使用%d
這隻會導致麻煩。嘗試在Visual Studio上使用%zu
(在gcc/clang上)或%Iu
對視覺工作室
2
根據Unexpected behavior from STL's queue稍微調整。
的std ::隊列是一個非常薄的適配器(即包裝)圍繞另一個容器,您所舉報的行爲實際上是性病的行爲:: deque的,沒有標準::隊列,因爲你不改變默認容器。
在空序列上調用pop()是未定義的行爲。
相關問題
- 1. 爲什麼我的編譯文件的大小減少了?
- 2. Canvas減少了Jpeg的圖像大小,但是爲什麼?
- 3. in Hbase,儘量減少行和列的大小,爲什麼?
- 4. 爲什麼一個deque的大小會少於一個小數?
- 5. 爲什麼我的SWF文件大小在減少內容時不會減少?
- 6. 拆分列表爲減少大小
- 7. 減少我的NVARCHAR列的大小有什麼好處
- 8. 爲什麼減少這個懶惰序列減慢了這個Clojure程序20x?
- 9. 爲什麼div的大小自動減少,即使我給的大小
- 10. 爲什麼我的window.history大小不會減少?
- 11. 爲什麼python tarfile gz沒有減少文件大小
- 12. 爲什麼在一個賬號之後減少停止?
- 13. 減少TimePicker大小
- 14. 減少BitmapDrawable大小
- 15. 什麼是HBase壓縮隊列大小?
- 16. 減少Flask-Admin中列的大小
- 17. 隊列剛剛彈出第一個和最後一個元素
- 18. 是.htacess大小減少網站的性能?什麼是.htacess的最大大小?
- 19. 隊列減少算法?
- 20. 爲JDK7和JRuby減少彈藥大小(或增加限制)
- 21. 一個java ServerSocket的隊列的大小
- 22. 縮小按鈕的大小減少了圖像的大小,而不是減小大小
- 23. 如何減少SSRS PDF輸出大小
- 24. Docker - 減少拉的大小
- 25. 減少dll的大小vC++
- 26. 減少紋理的大小
- 27. Solr大小的減少
- 28. 減少listitem的大小?
- 29. 調整大小後圖像的文件大小沒有減少
- 30. 爲什麼n減少?
可能是因爲彈出空容器會調用未定義的行爲。 –
如果您修復了程序中的錯誤,那麼一切都將回到合理的位置。 (IOW「爲什麼它是我的越野車程序不正確?」是一個很差的問題) –
..和-1返回是一個很好的線索,該方法是抱怨它。 –