插入允许将内容插入到结构的任意位置。
std::queue
是一个FIFO结构的抽象接口。您只能将内容添加到末尾。底层结构不一定具有向任意位置插入的有效方法(例如考虑std::vector
)。因此,std::queue
没有通用的插入成员函数。
由于通用插入函数需要迭代器位置参数,因此多次插入提供了方便,这样您就不必跟踪下一个迭代器位置。推回没有这个需求,因为不需要迭代器跟踪,简单的循环就足够了。
insert
可以在队列中任何位置插入元素,而我一直在考虑“只能在队列顶部插入”。顺便说一下,他们本来可以实现这样的方法(也许可以通过某种优化而不是简单的push
循环)。 - justHelloWorldstd::queue
是一个适配器,旨在限制为push/pop接口。即使std::vector
是底层实现,它也不会暴露insert
。
没有特定的性能原因,仅仅是一种设计方法:如果你认为你的容器是一个队列,你就不会暴露你不需要的接口。
deque
的超级赛亚人力量呢?也许这两种数据结构在性能方面有一些差异? - justHelloWorldstd::queue
是一个高级容器,具有底层容器,可能或可能不会有效地实现插入,因此它并不是一个已知性能的数据结构。 - Kinan Al Sarministd::queue
不会让任何人“插队”并在中途进入队列,这可能是你想要的限制。 - Bo Persson