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

Move Queues between variables without copying elements

本文关键字:复制 元素 队列 变量 之间 移动      更新时间:2023-10-16

我在一个应用程序中有几个队列,我想更改它们"指向"的位置,为其他队列更改一个队列。

例如,如果我有:

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>();

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

我宁愿避免指针,这样我就不必显式地管理内存。

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

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

因此q1保持来自q2的先前资源、q2保持来自q3的先前资源且q3为空。