<分区>
我有一个变量声明为
vector<vector<float>> a(10, vector<float>(20));
我想做的是将数据保存在一个转置的线性数组中
float *linear = new float[200];
所以最后,线性数组中不再有 10 行,每行 20 个元素(我已经实现了),而是有 20 行,每行 10 个元素。
有没有更好的方法来代替从 vector 复制到线性数组然后转置线性数组?
<分区>
我有一个变量声明为
vector<vector<float>> a(10, vector<float>(20));
我想做的是将数据保存在一个转置的线性数组中
float *linear = new float[200];
所以最后,线性数组中不再有 10 行,每行 20 个元素(我已经实现了),而是有 20 行,每行 10 个元素。
有没有更好的方法来代替从 vector 复制到线性数组然后转置线性数组?
最佳答案
也许我误解了你的问题,但是你有什么理由不能直接将它写入线性内存,在你写的时候进行转置?您只是在交换行索引和列索引,不是吗?
float *p = linear;
for (int row = 0; row < 20; row++) {
for (int col = 0; col < 10; col++) {
*(p++) = a[col][row];
}
}
关于c++ - 二维 vector 到主列格式的线性存储器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734824/