0

だから私は 2D 配列を持っていて、2D 配列の行 'pth' 行を新しい 1D 配列に割り当てたい: 私のコードは次のようになります:

float temp[] = { *aMatrix[p] }; // aMatrix is  a 10x10 array
                                // am trying to assign the pth row
                                // to temp. 

*aMatrix[p] = *aMatrix[max];

*aMatrix[max] = *temp;

float t = bMatrix[p];
bMatrix[p] = bMatrix[max];

上記の宣言の後、temp は aMatrix の p 番目の行のすべての値を含む長さ 10 である必要がありますが、値だけが含まれています。私はそのステートメントのすべての組み合わせを試しましたが、コンパイルエラーしか得られません..

私の質問は、この割り当てを行う正しい方法は何ですか?

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

3

ポインタを少し混乱させているようです。単純な割り当てを使用してすべてのメンバーをコピーすることはできません。C++ は、配列のメンバーごとの割り当てをサポートしていません。次のように要素を反復処理する必要があります。

float temp[10];

// copy the pth row elements into temp array.
for(int i=0; i<10; i++) {

   temp[i] = aMatrix[p][i]; 
}

aMatrix がある時点で長さを変更する可能性がある場合は、この 2 番目の方法でも実行できます。

int aLength = sizeof(aMatrix[p]) / sizeof(float);

float temp[aLength];

// copy the pth row elements into temp array.
for(int i=0; i < aLength; i++) {

   temp[i] = aMatrix[p][i]; 
}
于 2012-07-12T19:12:39.607 に答える
0

なぜ使用しないのstd::arrayですか?C スタイルの配列とは異なり、代入可能です。

typedef std::array<float, 10> Row;

std::array<Row, 10> aMatrix;

Row temp = aMatrix[5];
于 2012-07-12T19:26:54.697 に答える