【发布时间】:2011-10-29 19:59:25
【问题描述】:
我定义了一个 myObjects 向量的向量,基本上创建了一个二维数组。我想转置这个数组,使行变成列,列变成行。显然,我可以在双 for 循环中执行此操作,但这似乎非常不优雅并且会非常慢。我想知道 C++ 或 STL 中是否有一些聪明的东西可以让我快速有效地交换内部和外部向量,而不是编写......
for (int iRow = 0; iRow < nRows; ++iRow)
{
for (int iCol = 0; iCol < nCols; ++iCol)
{
myNew2DArray[iCol][iRow] = myOriginal2DArray[iRow][iCol];
}
}
【问题讨论】:
-
它有什么不雅之处?没有办法让你不得不移动这段记忆。
-
除了制作一个新的向量,你能不做一堆交换吗?不知道什么会更快。转置的另一种替代方法可能只是创建一个为您反转索引的函数——这样您就可以像转置一样使用它。
-
是的,就是这样。不过,您的限制和目标是什么并不是很清楚(例如,空间是否重要?)。这纯粹是一个样式/语法问题吗?
-
我之前在这里看到过有关如何使用 boost::extents 旋转 ND 阵列索引的问题,但记不清了
标签: c++ multidimensional-array matrix