c ++队列容器

时间:2012-01-15 22:55:11

标签: c++ queue

我的程序中有队列问题。有一个队列我想使用这个队列,只有另一个id。这就是我现在所拥有的:

queue<R> queue;
queue<R> queue2;
...
while (! queue2.empty() )
{
  R r = queue2.front();
  queue2.pop();
  queue.push(r);
}

但它是线性的。我希望有可能在O(1)时间内完成。我试图使用引用,但我失败了。

2 个答案:

答案 0 :(得分:2)

您可以使用免费的std::swap功能:

std::queue<R> queue2;
std::swap(queue1, queue2);

这只是在底层容器上调用swap,所以它应该相当有效。

(根据John Zwinck的linked question,这是C ++ 11的一个新功能,因此较旧的编译器可能会拒绝这一点或执行效率低下。)

答案 1 :(得分:2)

您没有告诉我们您是如何“失败”的,但引用是really easy

std::queue<R> queue;
std::queue<R>& queue2 = queue;

完成工作。