c++ - 为什么 C++ 有队列和堆栈,因为它已经有双端队列?
问题描述
我想知道为什么 C++ 有队列和堆栈,因为它已经有双端队列。
看来stack/queue的runtime和使用deque模拟stack/queue是一样的。此外,deque 支持诸如擦除、迭代器和随机访问之类的修饰符,而堆栈或队列都不支持这些修饰符。
那么为什么 C++ 提供所有这三个,因为双端队列比其余两个更强大?
谢谢!
解决方案
std::queue
并且std::stack
实际上不是标准库中的容器。它们是容器适配器,存在是为了在实际容器之上为您提供特定接口。
你不希望你的堆栈有一个operator []
所以我们包装std::deque
(默认情况下,你可以使用不同的容器),所以我们不会暴露堆栈没有的操作。
推荐阅读
- sql - Oracle 字符串到日期到时间戳
- javascript - Javascript检查颜色是否为白色不起作用
- html - 过滤的背景图像在悬停时隐藏我的文本 (SCSS)
- security - 如何对 gcloud 项目管理员隐藏秘密?
- python - 从列表列表中移动元素
- c++ - _cgets 不起作用。未找到标识符
- java - 如何强制 java SSLContext 使用 TLSv1.1
- sql-server - 在 Visual Studio 2017 上安装 SSDT 时出错
- powerbi - 为什么两个相似的度量给出不同的总计?
- java - JSON.simple - 如何正确访问嵌套的 JSON 对象