60

でどのように/使用できるかを理解しようとしてunique_ptrqueueます。

// 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&は 2 つの別個のステップであるためpop、要素を移動することはできません。これを行う方法はありますか?

4

1 に答える 1

89

ポインターをキューの外に移動したいことを明示的に言う必要があります。このような:

std::unique_ptr<int> p2 = std::move(q.front());
q.pop();
于 2013-01-02T18:55:03.673 に答える