在许多非官方 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/