0

我有一个变量声明为

vector<vector<float>> a(10, vector<float>(20));

我想做的是保存数据,但保存在一个转置的线性数组中

float *linear = new float[200];

所以最后,线性数组中没有 10 行 20 个元素(我已经实现了),而是 20 行 10 个元素。

有没有更好的方法来做到这一点,而不是从向量复制到线性数组然后转置线性数组?

4

1 回答 1

1

也许我误解了你的问题,但是你有什么理由不能直接把它写到线性内存中,在你写的时候转置?您只是在交换行和列索引,不是吗?

float *p = linear;
for (int row = 0; row < 20; row++) {
  for (int col = 0; col < 10; col++) {
    *(p++) = a[col][row];
  }
}
于 2013-07-18T22:50:35.287 回答