【发布时间】:2015-03-13 16:59:07
【问题描述】:
我想存储一个std::threads的向量
目前,我将其实现为std::vector<std::thread*>
但是,这需要手动删除std::threads
最优雅的 c++11 方法是什么?我可以看到std::shared_ptr,但这不是矫枉过正吗?指针是唯一的,但是std::vector需要临时复制一下。
也许我不需要指针,但std::thread 是不可复制的,我想我需要。
谢谢!
【问题讨论】:
-
不,
std::vector支持仅移动类型。如果您确实需要指针向量,可以查看boost::ptr_vector。 -
"但是,这需要手动删除 std::threads" 为什么每个人都认为必须删除每个指针?
-
@juanchopanza 因为每个分配有 new 的对象都需要被删除——显式地或通过 RAII(智能指针)。
-
@DaleWilson 每个指针都必须指向一个现在用 new 分配的对象?
-
如果您不打算复制
std::thread*,可以直接使用std::unique_ptr,您只需要确保使用移动方式获取std::vector的值。跨度>
标签: c++ multithreading c++11 vector stl