Как я называю значения массивов, которые хранятся в массиве - PullRequest
0 голосов
/ 14 июня 2019

Итак, я пытаюсь сохранить массивы внутри другого массива, и мне трудно печатать все значения.

Не уверен, возможно ли это в c ++, но это возможно в pythonи попробовал.

#define ROW 7

int one[ROW], two[ROW], three[ROW], four[ROW], five[ROW], six[ROW], seven[ROW]; 
int grid[7];

void initialize() {
    for (int i = 0; i < ROW; i++) {
        one[i] = 0;
        two[i] = 0;
        three[i] = 0;
        four[i] = 0;
        five[i] = 0;
        six[i] = 0;
        seven[i] = 0;
    }
    grid[0] = *one;
    grid[1] = *two;
    grid[2] = *three;
    grid[3] = *four;
    grid[4] = *five;
    grid[5] = *six;
    grid[6] = *seven;
}

void print() {
    for (int i = 0; i < 7; i++) {
    int bro = grid[i];
        cout << grid[i] << endl;

        for (int elem : grid[i]) {
            cout << elem << endl;
        }
    }
}

И у меня есть эта ошибка:

error: ‘begin’ was not declared in this scope
             for (int elem : grid[i]) {

error: ‘end’ was not declared in this scope
             for (int elem : grid[i]) {

Ответы [ 2 ]

1 голос
/ 14 июня 2019

This:

int grid[7];

Строго объявлять одномерный массив.

This:

grid[0] = *one;

Он не присваивает массив первому элементу.С массивом в стиле C *arr эквивалентно arr[0].Таким образом, вы присваиваете первое число внутри one в grid[0].

Типы не могут изменяться в C ++.Вам нужно будет объявить 2D-массив, если это то, что вам нужно:

int grid[7][7];

Если вы хотите копировать массивы, raw-массив не справится с этой задачей.Использование std::array исправит копию:

constexpr int row = 7;
std::array<std::array<int, row>, row> grid;
std::array<int, row> one;

// ...

grid[0] = one; // copy one into a row of grid correctly

Кстати, глобальные переменные по умолчанию инициализируются нулями.

0 голосов
/ 14 июня 2019

Я не знал, что это возможно в c ++, но, видимо, это так и работает просто отлично.

int arr[7][7] = {
        {
            0,1,0,0,0,0,0
        },
        {
            0,0,2,0,0,0,0
        },
        {
            0,0,0,0,0,0,0
        },
        {
            0,0,0,0,0,0,0
        },
        {
            0,0,0,0,0,0,0
        },
        {
            0,0,0,0,0,0,0
        },
        {
            0,0,0,0,0,0,0
        },
    };


for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 7; j++) {
            cout << arr[i][j] << " | ";
        }
        cout << endl;
    }

result:
0 | 1 | 0 | 0 | 0 | 0 | 0 | 
0 | 0 | 2 | 0 | 0 | 0 | 0 | 
0 | 0 | 0 | 0 | 0 | 0 | 0 | 
0 | 0 | 0 | 0 | 0 | 0 | 0 | 
0 | 0 | 0 | 0 | 0 | 0 | 0 | 
0 | 0 | 0 | 0 | 0 | 0 | 0 | 
0 | 0 | 0 | 0 | 0 | 0 | 0 |

...