从队列中删除unique_ptr
我想弄清楚如何在queue
使用unique_ptr
。
// 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
和front
是两个独立的步骤,因此元素不能移动。 有没有办法做到这一点?
你应该明确地说你想把指针移出队列 。 喜欢这个:
std::unique_ptr<int> p2 = std::move(q.front()); q.pop();
- constexpr和初始化一个静态const void指针reinterpret强制转换,哪个编译器是正确的?
- std :: system_clock和std :: steady_clock之间的区别?
- GCC错误与可变参数模板:“对不起,未实现:不能扩展'标识符…'到一个固定长度的参数列表”
- 为什么在Herb Sutter的CppCon 2014演讲中不推荐使用setter成员函数(回到基础:现代C ++风格)?
- 右值参考被视为左值?
- C ++ 11:为什么std :: condition_variable使用std :: unique_lock?
- 何时可以在初始化列表中省略外部大括号?
- 指针和引用之间的区别作为线程参数
- C ++是否支持可变长度数组?