在变量之间移动队列而不复制元素
Move Queues between variables without copying elements
我在一个应用程序中有多个队列,我想更改它们所在的位置 'pointing',为其他队列更改。
例如,如果我有:
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
为空。
我在一个应用程序中有多个队列,我想更改它们所在的位置 'pointing',为其他队列更改。
例如,如果我有:
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
为空。