首页 > 解决方案 > 如何调用存储在数组中的数组的值

问题描述

所以我试图将数组存储在另一个数组中,我很难尝试将所有值打印出来。

不确定这在 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]) {

标签: c++arraysclassc++11

解决方案


这个:

int grid[7];

严格声明一维数组。

这个:

grid[0] = *one;

它不会将数组分配给第一个元素。用 C 风格的数组,*arr等价于arr[0]. 因此,您将内部的第一个数字分配onegrid[0].

类型在 C++ 中不能更改。如果这是你想要的,你必须声明一个二维数组:

int grid[7][7];

如果你想复制数组,原始数组将无法完成这项工作。使用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

顺便说一下,全局变量默认初始化为零。


推荐阅读