主列格式的2D矢量到线性存储器

时间:2013-07-18 22:11:10

标签: c++ stdvector transpose

我有一个声明为

的变量
vector<vector<float>> a(10, vector<float>(20));

我要做的是保存数据但是在转置的线性数组中

float *linear = new float[200];

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

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

1 个答案:

答案 0 :(得分:1)

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

float *p = linear;
for (int row = 0; row < 20; row++) {
  for (int col = 0; col < 10; col++) {
    *(p++) = a[col][row];
  }
}