我读过的所有STL容器提供交换算法的专业化,以避免调用拷贝构造函数和默认方法使用两个赋值操作。然而,当我认为这将是很好用的一些代码我是工作在我队列注意到,(不像向量和双端队列)队列不提供这样的方法?我决定使用双端队列,而不是一个队列,但我仍然很有兴趣知道这是为什么?

有帮助吗?

解决方案

的C ++ 0x 将增加交换到容器适配器比如std ::队列。我只能猜测为什么它是从当前标准缺失。 在讨论有人提出了解决方法:

  

有一个解决方案,因为标准使得保护的需要的部分,    所谓的继承。 [只是不通过STD适配器破坏]    创建一个模板结构继承所需的适配器,只提供    构造函数和ARGS转发到适配器类,写    调剂员是一个单元,因为所需要的项目是受保护的成员    标准的适配器。

其他提示

我敢肯定,他们被冷落的一个监督。平心而论,我使用std ::队列和std ::堆了不少从未有过交换两个。我想你一个deque而不是队列的使用是好的。像typedef std::deque<MyType> QueueType东西就可以提供足够的提示如何容器应该使用的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top