从队列中删除unique_ptr

时间:2013-01-02 18:52:14

标签: c++ c++11 unique-ptr

我正在试图弄清楚如何在unique_ptr中使用queue

// create queue
std::queue<std::unique_ptr<int>> q;

// add element
std::unique_ptr<int> p (new int{123});
q.push(std::move(p));

// try to grab the element
auto p2 = foo_queue.front();
q.pop(); 

我明白为什么上面的代码不起作用。自front&amp; pop是两个单独的步骤,元素无法移动。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:63)

您应该明确表示要指针移出队列。像这样:

std::unique_ptr<int> p2 = std::move(q.front());
q.pop();