我的程序中有队列问题。有一个队列我想使用这个队列,只有另一个id。这就是我现在所拥有的:
queue<R> queue;
queue<R> queue2;
...
while (! queue2.empty() )
{
R r = queue2.front();
queue2.pop();
queue.push(r);
}
但它是线性的。我希望有可能在O(1)时间内完成。我试图使用引用,但我失败了。
答案 0 :(得分:2)
您可以使用免费的std::swap
功能:
std::queue<R> queue2;
std::swap(queue1, queue2);
这只是在底层容器上调用swap
,所以它应该相当有效。
(根据John Zwinck的linked question,这是C ++ 11的一个新功能,因此较旧的编译器可能会拒绝这一点或执行效率低下。)
答案 1 :(得分:2)