c++ - 多维数组逻辑

标签 c++ arrays loops multidimensional-array

我目前被多维数组迷惑了。

我对编程了解很多,我想知道与 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, 00, 11, 0 对的事实> 和 1, 1,通过对 0123 执行算术运算:

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/

相关文章:

c++ - 如何在 C++ OCX 模块中指定采用 void* 的函数?

java - if/else "last resort"while 在循环中

java - 在单个 JOptionPane 中显示多个 System.out.print?

Python 在达到某个点时停止迭代

c++ - 由于构建错误 : 'STARTUPINFO' : undeclared identifier,无法使用 CreateProcess

c++ - 互斥锁和内联函数

c++ - ScopedDbConnection 偶尔抛出 "Couldn' t 连接到 127.0.0.1",可能的原因?

c++ - 使用 SSE 或 SSE3 在 ushort 数组中添加 uchar 值

c# - 在 C# 中从类声明数组

javascript - 如何使用javascript从数组中绘制折线图