c++ - 二维 vector 到主列格式的线性存储器

标签 c++ stdvector transpose

<分区>

我有一个变量声明为

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/

相关文章:

c++ - 如何在嵌套循环中匹配来自两个字符串 vector 的字符串值

python - 在 python 中转置(旋转)列表字典

c++ - vector 的 vector ,保留

xerces - Xerces-C 中的 XPath 支持

c++ - Qt - 跟踪 QAbstractAnimation 运动

c++ - 将 0 个参数传递给可变参数宏在 GCC 中失败,但仅在 C++ 中?

C++ 遍历对象并获取它们的地址

javascript - 将 TD 数组转置为列 jQuery

c - 转置矩阵

c++ - 补码架构上的负零行为?