C++ - std::vector 安全的多线程

C++ - std::vector safe multi-threading

我正在开发一个程序来计算矩阵的行列式(可能很大,最多 1000 行)。 由于它可能很大,我在 dim(M) > 250(< 250 在 100 毫秒内计算)时使用多线程。

我的想法是把矩阵分成4份,Gauss同时消去每份,然后重新收集矩阵,计算行列式。

我想知道,在多个线程中访问一个向量是否安全,因为它保证我只会访问它的不同部分?

另外,有什么技巧可以限制内存的使用? 我用的是vector<vector<double>>,所以8 * 1000 * 1000 doubles真的是个大麻烦。

只要不改变它的大小,它就是安全的。

向量的内容不会移动,除非您调整大小。所以只要访问内存的不同部分就是安全的。