0

次のように宣言された変数があります

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

私がやろうとしているのは、データを保存することですが、転置された線形配列に保存することです

float *linear = new float[200];

そのため、最終的には、線形配列に 20 要素の 10 行 (既に実装済み) ではなく、10 要素の 20 行があります。

ベクトルから線形配列にコピーしてから線形配列を転置する代わりに、これを行うより良い方法はありますか?

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 に答える