2

STL队列front()back()方法,但堆栈只有top(),而没有bottom()。为什么呢?

4

2 回答 2

8

唯一的原因stack是禁止访问被包裹的容器,除非作为堆栈,即仅访问顶部。如果您想要一个可以用作堆栈但不限于仅用作堆栈的容器,那么您可以使用不同的序列容器,例如 raw vector

同样,唯一的原因queue是禁止访问被包装的容器,除非作为队列,即访问前和后。如果您想要一个可以用作队列但不限于仅用作队列的容器,那么您可以使用不同的序列容器,例如 raw vector

于 2012-08-11T20:03:19.087 回答
2

队列通常表示先进先出 (FIFO) 缓冲区。您可以访问两端。一端有最新的项目,另一端有最旧的项目。您可能希望从将元素添加到队列的代码中访问最新的项目,并从处理队列中的项目的代码中访问最旧的项目。

堆栈通常表示后进先出 (LIFO) 缓冲区。您只能访问一端,即最近添加到堆栈中的项目。所以只需要一个top(),没有bottom()。

于 2012-08-11T20:05:03.797 回答