最好的c ++ 11存储指针向量的方法

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可能是最好的选择; 或类似dequelist不需要移动其值的容器.