C++ std::mutex需要一个可调整大小的容器

C++ std::mutex需要一个可调整大小的容器,c++,vector,containers,mutex,C++,Vector,Containers,Mutex,我需要能够在任何给定的时间存储“n”个互斥体 这些URL与我的问题直接相关 我相信我理解为什么互斥体不能存储在可能需要移动它们的容器中(因为互斥体不能移动)。我的问题是,自从这些文章发布以来,c/c++中有没有什么我不知道的发展 一个简单的数组会很好,但由于明显的原因,它不起作用。向量或类似的方法也可以,除了不能移动互斥量,因此会生成编译器错误。下面的方法确实有效,但似乎受到了一些人的谴责。以下代码示例不应用于解决问题,是否有编程方面的原因 std::vector<std::timed_

我需要能够在任何给定的时间存储“n”个互斥体

这些URL与我的问题直接相关

我相信我理解为什么互斥体不能存储在可能需要移动它们的容器中(因为互斥体不能移动)。我的问题是,自从这些文章发布以来,c/c++中有没有什么我不知道的发展

一个简单的数组会很好,但由于明显的原因,它不起作用。向量或类似的方法也可以,除了不能移动互斥量,因此会生成编译器错误。下面的方法确实有效,但似乎受到了一些人的谴责。以下代码示例不应用于解决问题,是否有编程方面的原因

std::vector<std::timed_mutex*> myMutexes;
myMutexes.push_back(new std::timed_mutex());
std::vector mymutex;
mymutex.push_back(新std::timed_mutex());
从链接页面

如果需要在序列末尾添加不可移动的项,请切换到
deque
,这将在
vector
不起作用的地方起作用


如果您需要的插入或删除既不在开头也不在结尾,那么当然
std::deque
也不起作用,您需要使用类似
std::vector
的东西。这比使用原始指针要好,因为它保证了当互斥体从向量中移除或向量超出范围时(程序异常终止的情况除外),互斥体将被释放。

至少,使用
std::unique_ptr
而不是拥有原始指针将是更好的跳跃和绑定。
std::vector
是适合您的容器。基本上,它的工作原理类似于
std:list
,但它有更好的缓存位置!你应该描述一下你在同步什么,因为你肯定是做错事了?我开始得到一个暗示,使用“新”的东西已经不再被认为是好的编程实践了(显示出我的年龄)。如果您不介意我问的话,使用std::vector向向量添加互斥体的语法是什么?@Weedware
mymutex.push_back(std::make_unique())
@Weedware
v.push_back(std::make_unique())
。像往常一样,你们真是棒极了!非常感谢,我又跑了。