在变量之间移动队列而不复制元素

时间:2015-04-08 09:09:28

标签: c++ pointers c++11 reference

我在应用程序中有几个队列,我想改变它们的位置'指向'改变其他人的。

例如,如果我有:

queue<int> q1 = queue<int>();
queue<int> q2 = queue<int>();
queue<int> q3 = queue<int>();

每个队列中都有几个元素,我想更新q1,使其指向q2和q2,使其指向q3,而不是复制元素。我可以这样做:

q1 = &q2;
q2 = &q3;
q3 = queue<int>();

如果是这样,我该怎么写呢?或者我是否必须将这些队列转换为指向队列的指针,以便能够更改它们指向的位置?

我宁愿避免指针,所以我不必明确管理内存。

1 个答案:

答案 0 :(得分:2)

您可以移动元素(从C ++ 11开始),而不是复制:

q1 = std::move(q2);
q2 = std::move(q3);
q3 = queue<int>();

所以q1保留q2之前的资源,q2保留q3q3之前的资源为空。