首页 > 解决方案 > 还有其他方法可以在数组中写入多维数组吗?

问题描述

我需要向数组中添加一个数组,我想为我找到最方便的方法。

我知道这里只有 2 个添加选项是示例。

int main() {
    int arr[5][6][8]{0};
    // option 1
    int& F = arr[1][0][1];
    F = 2;
    int L = arr[2][0][F];
    L = 5;

    // option 2
    arr[1][1][1] = 3;
    int Z = arr[2][1][arr[1][1][1]];
    Z = 7;
    cout << " ARR L " << L << "\n" << endl;
    cout << " ARR Z " << Z << "\n" << endl;


    system("pause");

    return 0;
}

我需要这样一个模板来帮助我编写可读的代码。这很难,我知道,但请试着理解。我的模板应该将我从多维数组中拯救出来

想象一下,我会做一些像这样疯狂的事情。

arr[1][0][1] = 2; // in fact, the number is unknown, this is just an example. the program itself adds the numbers that are needed
int F& = arr[2][0][arr[1][0][1]] = 5;
arr[1][1][1] = 3;

int Z& = arr[arr[1][0][1]][arr[2][0][F]][arr[1][1][1]];

Z = 7;

标签: c++

解决方案


让我们看看你的两个选择...

选项1

// option 1
int& F = arr[1][0][1];
F = 2;
int& L = arr[2][0][F];   // added &
L = 5;

我改成int Lint& L,否则没有意义。那么上面的效果和上面一样

arr[1][0][1] = 2;
arr[2][0][2] = 5;

我认为这比您的选项1清楚得多。没有不必要的变量和间接,只是简单的赋值。

选项 2(再次更改为使用参考)

// option 2
arr[1][1][1] = 3;
int& Z = arr[2][1][arr[1][1][1]];
Z = 7;

这与

arr[1][1][1] = 3;
arr[2][1][3] = 7;

同样,我认为没有理由让它比这更复杂。

PS:我知道这个答案很可能不是你想听到的,但我希望这会告诉你如何使它不比必要的复杂,也许你能解释你有哪些额外的要求你没有提一下。


推荐阅读