如何将条件变量对象插入向量?

use*_*065 2 c++ vector c++11

conditional_variable 不是可复制构造、可移动构造、可复制分配、可移动分配。

我们可以这样打电话吗

vector<conditional_variable> cond;

conditional_variable c1;
conditional_variable c2;
cond.push_back(c1);
cond.push_back(c2);
Run Code Online (Sandbox Code Playgroud)

在这些情况下正确的处理方法是什么

T.C*_*.C. 5

您可以创建一个向量,该向量可以默认构造,但不能使用带有大小参数的构造函数进行复制或移动:

std::vector<std::condition_variable> cv_vec(20);
Run Code Online (Sandbox Code Playgroud)

这样的向量不能增长,但可以用pop_back()或缩小clear()(但不能erase()用 或resize())。

或者,由于所有问题都可以通过额外的间接级别来解决,因此您可以使用 的向量std::unique_ptr<std::condition_variable>来代替。

现在,为什么有人想要对像这样的同步原语执行此操作condition_variable,我不知道......