c++ - 为什么C++标准队列有back函数,stack没有bottom函数?

标签 c++ stack queue std

在许多非官方 C++ 引用网站之一上,列出了 std::queue 的成员函数 front()back() .然而,std::stack只有top()函数。

堆栈没有 bottom() 函数是有意义的,因为那是堆栈的定义。

我不明白的是,为什么 C++ 标准委员会选择不遵循队列的定义并为队列提供 back() 函数,而选择遵循堆栈的定义并且不提供 bottom() 函数。

最佳答案

back() 可能还有其他原因,但您需要它来创建队列,因为 C++03 的习惯用法是廉价地将“空”对象复制到容器中,然后 swap 将新元素与复制成本非常高的“完整”对象交换。由于移动语义,这个原因在 C++11 中或多或少已过时,但当然 back() 仍然需要兼容性。

出于这个(或任何其他)原因,您不需要 bottom() 来获取堆栈。

关于c++ - 为什么C++标准队列有back函数,stack没有bottom函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21504563/

相关文章:

python - 将超时参数添加到 python 的 Queue.join()

java - 优先购物排队

c++ - 使用C++导入注册表文件

c++ - 使用枚举方向列表时反转方向(从左到右或从上到下)

c++ - 在Visual Studio Code中的Mac上运行C++程序

c++ - cpp - 模板范围错误?

stack - Ada 初学者 Stack 程序

c - 如何在C/Linux中实现双重比较和交换?

c++ - 使用特定于机器的 `.file` 路径 - CUDA .ptx 文件是否可移植?

java - 不打印堆栈中输入的第一个节点(toString)