1

これは私が持っているコードです:

#include <cstdlib>
#include <stdio.h>

using namespace std;

int main(int argc, char** argv) {

    int a[] = {0,1,2,3,4,5,6,7};
    int array_grande[3][8];

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande[m] = a[i];
        }
    }

    return 0;
}

array_grande を 3 つの位置と 8 つの整数の各位置を持つ配列として宣言したので、必要なのは配列の配列です。

array_grande = {{0,1,2,3,4,5,6,7},{0,1,2,3,4,5,6,7},{0,1,2,3,4,5,6,7}}

の 2 番目のインデックスが原因だと思いますarray_grande。誰か手を貸してくれませんか?可能な限りコードをそのまま維持したいと思います。前もって感謝します

4

5 に答える 5

8
array_grande[m] = a[i];

あなたは、おそらく、したいです

array_grande[m][i] = a[i];

または、ヘッダーcopyから関数を使用できます。algorithm

std::copy(std::begin(a), std::end(a), array_grande[m]);

別の方法は次を使用していstd::arrayます:

std::array<int, 8> a{{0,1,2,3,4,5,6,7}};
std::array<std::array<int, 8>, 3> array_grande;

for(auto& elem: array_grande)
    elem = a;

または、より簡単に:

std::array<int, 8> a{{0,1,2,3,4,5,6,7}};
std::array<std::array<int, 8>, 3> array_grande{{a, a, a}};
于 2013-05-28T11:14:45.710 に答える
2

目標を達成するには、いくつかの方法があります。

#include <cstdlib>
#include <stdio.h>
#include <memory.h>

int main(int argc, char** argv) {

    int a[] = {0,1,2,3,4,5,6,7};
    int array_grande[3][8];
    int array_grande_2[3][8] = { {0,1,2,3,4,5,6,7}, {0,1,2,3,4,5,6,7}, {0,1,2,3,4,5,6,7} };
    int array_grande_3[3][8];
    int array_grande_4[3][8];

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande[m][i] = a[i];
        }
    }

    for(int m=0; m<3; m++) {
        for(int i=0; i<8; i++) {
                array_grande_3[m][i] = i;
        }
    }

    for(int m=0; m<3; m++) {
        memcpy(&array_grande_4[m], a, 8 * sizeof(int));
    }

    return 0;
}
于 2013-05-28T11:23:58.017 に答える
1

内部の割り当てを見ると、次のようになります。

array_grande[m] = a[i];

int( ) を配列に割り当てているa[i]か、int ( array_grande[m]) へのポインターを割り当てています。次のように変更するだけです。

array_grande[m][i] = a[i];
于 2013-05-28T11:15:55.733 に答える