首页 > 解决方案 > 为什么 C++ 有队列和堆栈,因为它已经有双端队列?

问题描述

我想知道为什么 C++ 有队列和堆栈,因为它已经有双端队列。

看来stack/queue的runtime和使用deque模拟stack/queue是一样的。此外,deque 支持诸如擦除、迭代器和随机访问之类的修饰符,而堆栈或队列都不支持这些修饰符。

那么为什么 C++ 提供所有这三个,因为双端队列比其余两个更强大?

谢谢!

标签: c++data-structuresstldeque

解决方案


std::queue并且std::stack实际上不是标准库中的容器。它们是容器适配器,存在是为了在实际容器之上为您提供特定接口。

你不希望你的堆栈有一个operator []所以我们包装std::deque(默认情况下,你可以使用不同的容器),所以我们不会暴露堆栈没有的操作。


推荐阅读