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