2011-05-02 107 views
4

stl中有什么函数可以连接两个std::queue对象吗?合并两个std ::队列

+0

你真的需要使用队列吗?如果你使用std :: list,你可以在两个列表中进行连接(假设它们不需要排序)。 – GWW 2011-05-02 20:45:00

+2

这意味着什么呢?如何在合并队列中排序条目? – 2011-05-02 20:52:32

回答

5

std::queue适配器不支持迭代,因此您实际上必须使用自己的方法来执行此操作。但考虑到你需要这个功能,你应该考虑一个不同的容器。如果你需要随机访问,大概std::deque。如果您只需要像队列一样的正面/背面访问,可以考虑使用std::list,这可以在不变的时间内连接到splice

+2

除非使用列表,否则只有在他经常拼接大型列表时才有好处,因为列表在执行*其他所有操作时会慢得多。 – GManNickG 2011-05-02 20:56:46

0

似乎没有要在STL提供的任何选项,但我能想到的一些其他的东西,你可以写自己:

  1. 编写自己的代码来读取一个队列到另一个,但是这是上)。

  2. 使用std::copy操纵底层的std::deque容器,同样是O(n)。

  3. 根据std::queue创建您自己的容器,但可以维护多个队列以模拟O(1)中的联接。