向量到一维数组的向量

Man*_*ete 5 c++ stl std stdvector

我想知道是否存在一种聪明的方式将信息作为一维数组呈现在向量中。示例:让我们创建一个包含5x3 int元素的向量的向量

vector< vector<int>> iVector;
ivector.resize( 5 );
for(i = 0; i < 5; i++){
    iVector[i].resize(3);
}
Run Code Online (Sandbox Code Playgroud)

但是现在我希望将此结构转换为一维数组:

int* myArray = new int[5*3];
Run Code Online (Sandbox Code Playgroud)

因此,我可以按以下方式访问我想要的每个元素:

for (i =0;i < 5; i++)
  for(j =0; j< 3; j++)
      myArray[i*3+j] = ...
Run Code Online (Sandbox Code Playgroud)

我知道我可以将向量逐个元素复制到数组,但是我想知道是否有一种方法可以直接解决向量到数组的转换问题。我也知道向量可以用来解决iVector[i][j],但不幸的是它必须是一个数组,因为它将被发送到GPU,而GPU无法理解向量。

Pio*_*ycz 2

只需使用std::copy5次。

int* ptrArray = myArray;
for (i =0;i < 5; i++) {
  std::copy(iVector[i].begin(), iVector[i].end(), ptrArray);
  ptrArray += iVector[i].size();
}
Run Code Online (Sandbox Code Playgroud)