c++ - 存储指针 vector 的最佳 C++11 方法

标签 c++ multithreading c++11 vector stl

我想存储 std::threads 的 vector

目前,我将其实现为 std::vector<std::thread*> 但是,这需要手动删除 std::thread

执行此操作的最优雅的 c++11 方法是什么?我可以看到 std::shared_ptr ,但这不是矫枉过正吗?指针是唯一的,但是 std::vector需要临时复制。

也许我不需要指点,但是std::thread不可复制,我想我可以。

谢谢!

最佳答案

自 C++11 起,vector只要求它的值是可移动的,如thread是。所以vector<thread>应该可以满足您的需求。

对于不可复制类型的操作有一些限制 - 您不能将值复制入或复制出,只能移动或放置它们 - 但这些很容易适应。

如果您确实需要存储不可移动的类型(例如 mutex),那么 unique_ptr可能是最好的选择;或类似 deque 的容器或 list不需要移动它的值。

关于c++ - 存储指针 vector 的最佳 C++11 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037929/

相关文章:

c++ - MFRC522 PICC responded with NAK (Porting MFRC522 arduino library[C++] to [C])

c++ - 我可以在没有 tputs 或 putp 的情况下使用 tparm()

java - 通用的无锁同步

java - 加速 Java 应用程序

c++ - 自动判断用户自定义函数是否等同于隐式函数

c++ - "return-by-reference"或 "pass-by-reference"参数何时与 constexpr 兼容?

c++ - 是否可以创建更好的 `std::min` 和 `std::max` 版本?

c++ - 当某个成员变量取值时,在 gdb 中有没有一种快速的方法来中断类的任何方法?

c++ - 特定于线程的数据——为什么我不能只使用带有线程 ID 的静态映射?

c++ - ostream 和 fstream 的父类(super class)