为什么std :: queue没有实现insert()而std :: deque呢?

时间:2017-05-26 08:58:23

标签: c++ c++11 queue deque

我正在阅读std::queue,我想知道为什么没有方法可以通过一次操作有效地插入多个元素,而std::deque提供std::deque::insert

2 个答案:

答案 0 :(得分:1)

插入允许插入到结构中的任意位置。

std::queue是FIFO结构的抽象接口。你只能添加东西到最后。底层结构不一定具有插入任意位置的有效方式(例如,考虑std::vector)。因此std::queue没有通用插入成员函数。

由于通用插入函数需要迭代器位置参数,因此为方便起见提供了多插入,因此您不必跟踪下一个迭代器位置。推回不需要这个,因为不需要迭代器跟踪,并且一个简单的循环就足够了。

答案 1 :(得分:0)

std::queue是一个意图的适配器,仅限于推/弹界面。即使insert是基础实现,它也不会公开std::vector

没有特别的性能原因,只有一种设计方法:如果您感觉您的容器是一个队列,那么您就不会公开您不需要的接口。