gal*_*tte 1 c++ multithreading stl vector c++11
我想存储一个矢量 std::threads
目前,我将其实现为std::vector<std::thread*>
但是,这需要手动删除std::threads
什么是最优雅的c ++ 11方法呢?我可以看到std::shared_ptr,但这不是一种矫枉过正吗?指针是唯一的,但std::vector需要临时复制它们.
也许我不需要指针,但是std::thread不可复制,我想我也是.
谢谢!
Mik*_*our 11
从C++ 11开始,vector只需要它的值可以移动,就像thread它一样.所以vector<thread>应该满足你的需求.
对于不可复制类型可以执行的操作有一些限制 - 您无法复制或移出值,只能移动或放置它们 - 但这些很容易适应.
如果你确实需要存储不可移动的类型(mutex例如),那么unique_ptr可能是最好的选择; 或类似deque或list不需要移动其值的容器.