我正在阅读std::queue
,我想知道为什么没有方法可以通过一次操作有效地插入多个元素,而std::deque
提供std::deque::insert
?
答案 0 :(得分:1)
插入允许插入到结构中的任意位置。
std::queue
是FIFO结构的抽象接口。你只能添加东西到最后。底层结构不一定具有插入任意位置的有效方式(例如,考虑std::vector
)。因此std::queue
没有通用插入成员函数。
由于通用插入函数需要迭代器位置参数,因此为方便起见提供了多插入,因此您不必跟踪下一个迭代器位置。推回不需要这个,因为不需要迭代器跟踪,并且一个简单的循环就足够了。
答案 1 :(得分:0)
std::queue
是一个意图的适配器,仅限于推/弹界面。即使insert
是基础实现,它也不会公开std::vector
。
没有特别的性能原因,只有一种设计方法:如果您感觉您的容器是一个队列,那么您就不会公开您不需要的接口。