2

如果我有:

std::vector<std::vector<double> > vec

假设我为每个 vec[0]、vec[1]、... vec[vec.size()-1] 分配空间。

如果我打电话:

vec[3].resize(100)

是否有可能vec[3]重新定位之前或之后分配的向量?

我问的原因是我有一个嵌套向量,如上面 openmp 部分所示。每个线程控制vec[threadnum]. 这些线程有一些调整大小。我想知道一个线程是否有可能调整大小vec[thread],这会导致其他线程可能发生变化。

4

1 回答 1

4

当您对向量执行调整大小(或调用任何其他方法)时,不会修改其他向量。

事实上,当你调用一个对象的方法时,其他不相关的对象并不会改变它们的状态。

如果我们想象所有向量都将它们的数据存储在公共连续的内存块中,那么我们这里有向量向量的事实可能会令人困惑。但事实并非如此。每个向量都有自己的内存区域,并且每个向量都可以独立地重新分配内存(并且“父”向量根本不知道重定位)。

于 2013-05-31T20:50:35.013 回答