STL queue有front()
和back()
方法,但stack只有top()
,但不bottom()
。爲什麼?不一致的STL容器適配器
2
A
回答
8
stack
唯一的原因是禁止訪問包裝容器,除非作爲堆棧,即僅訪問頂部。如果您想要一個可用作堆棧但不限於僅作爲堆棧使用的容器,則可以使用不同的順序容器,例如原始的vector
。
同樣,queue
的唯一原因是禁止訪問包裝容器,除非作爲隊列,即訪問正面和背面。如果您想要一個可以用作隊列但不僅限於僅作爲隊列使用的容器,那麼您可以使用不同的順序容器,例如原始的vector
。
2
隊列通常表示先進先出(FIFO)緩衝區。你可以訪問兩端。一端有最近的項目,另一端有最舊的項目。您可能想要從將代碼添加到隊列的代碼中訪問最近的項目,並從處理隊列中的項目的代碼中訪問最舊的項目。
堆棧通常代表後進先出(LIFO)緩衝區。您只能訪問添加到堆棧中的最近項目的一端。所以只需要有top()和bottom()。
相關問題
- 1. C++ STL容器
- 2. stl兼容的容器
- 3. 如何爲動態分配的stl容器設置分配器?
- 4. STL容器分配和const指針
- 5. 迭代器和STL容器
- 6. STL容器'difference_type typedef
- 7. 使用STL容器
- 8. 關於STL容器
- 9. 「適配器」或「適配器」?
- 10. STL容器上的指針
- 11. STL的TCMalloc分配器
- 12. 將一個STL容器的內容複製到另一個容器
- 13. Listview自定義適配器convertView不一致
- 14. 轉發聲明一個STL容器?
- 15. Emplace_back而不是push_back對stl容器?
- 16. STL容器的二進制兼容性
- 17. C++自定義分配器和STL容器
- 18. 可以從具有不同分配器的stl容器構造嗎?
- 19. STL - 複製混合容器
- 20. 時序STL容器 - 多變?
- 21. STL容器支持Windows Mobile
- 22. C++ STL容器:: clear :: swap
- 23. STL容器內存問題
- 24. 常量和STL容器
- 25. 模板和STL容器
- 26. 同時使用STL容器
- 27. STL multimap關聯容器
- 28. 多線程與STL容器
- 29. STL upper_bound定義不一致?
- 30. 適配器模式:類適配器與對象適配器
迂腐筆記,'queue'和'stack'不是容器。 – juanchopanza 2012-08-11 20:00:30
因爲它是一個堆棧。它有意限制在後進先出訪問中,因爲這就是棧的定義。隊列是先入先出的,所以你需要*訪問兩端。 – 2012-08-11 20:01:27
您可以輕鬆地添加'list'具有push_back和push_front,但'vector'僅具有push_back。在這種情況下,原因是您可以執行操作的效率。 – jahhaj 2012-08-11 20:03:04