我目前被多维数组迷惑了。
我对编程了解很多,我想知道与 cpp 研究所测验模块之一的问题相关的逻辑。
int* t[2] = { new int[2], new int[2] };
for (int i = 0; i < 4; i++)
t[i % 2][i / 2] = i;
std::cout << t[0][1] + t[1][0] << endl;
delete[] t[0];
delete[] t[1];
当编译器到达:
for (int i = 0; i < 4; i++)
t[i % 2][i / 2] = i;
我有点迷失了,t[int][int] 是否每个“i”循环都被操纵?我知道答案是什么,所以我只是在寻找逻辑说明以了解多维数组是如何在循环中计算的。
最佳答案
这是一种迭代所有有效组合的方法,因为它只是一个 2x2 数组。
基本上效果是一样的
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 2; j++) {
t[i][j] = i + 2*j
}
}
但它不是嵌套,而是依赖于您可以生成 0, 0
、0, 1
、1, 0
对的事实> 和 1, 1
,通过对 0
、1
、2
和 3 执行算术运算
:
i | i % 2 | i / 2
-----------------
0 | 0 | 0
1 | 1 | 0
2 | 0 | 1
3 | 1 | 1
关于c++ - 多维数组逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64615013/