最佳答案
因为在堆栈中使用容器所需的操作只有:
为什么它的默认容器是 deque 而不是矢量?
Deque 重新分配是否在 front ()之前给元素一个缓冲区,以便 push _ front ()是一个有效的操作?这些元素不是浪费了吗? 因为它们永远不会在堆栈的上下文中使用?
如果这样使用 deque 代替向量没有开销,那么为什么 序列优先级的默认值是向量而不是 deque 呢?优先级队列需要 front ()、 push _ back ()和 pop _ back ()——本质上与栈相同
根据以下答案更新:
似乎 deque 的实现方式通常是固定大小数组的可变大小数组。这使得增长速度快于向量(它需要重新分配和复制) ,因此对于像堆栈这样只需要添加和删除元素的东西,deque 可能是更好的选择。
为了完成每次删除和插入操作,都需要运行 pop _ heap ()或 push _ heap ()。这可能使矢量成为一个更好的选择,因为添加一个元素仍然是摊销常数反正。