如果我有:std::vector<std::vector<double> > vec
假设我为每个vec [0],vec [1],... vec [vec.size()-1]分配了空间。
如果我打电话给:vec[3].resize(100)
在vec[3]
之前或之后分配的 vector 是否有可能重新定位?
我问的原因是我有一个嵌套的 vector ,如上openmp部分所示。每个线程控制vec[threadnum]
。这些线程可以调整大小。我想知道一个线程是否有可能调整vec[thread]
的大小,这会导致其他线程潜在地移位。
最佳答案
对 vector 执行调整大小(或调用任何其他方法)时,不会修改其他 vector 。
实际上,当您调用对象的方法时,其他不相关的对象不会更改其状态。
如果我们设想所有 vector 都将它们的数据存储在公共(public)连续内存块中,那么我们这里有 vector 的事实可能会造成混淆。但是事实并非如此。每个 vector 都有其自己的内存区域,每个 vector 都可以独立地重新分配内存(“父” vector 根本不知道重定位)。
关于c++ - 调整嵌套std::vectors的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16865717/