gpt4 book ai didi

c++ - 在 C++ 中,这是顺序访问二维数组的方式(内存块方式)

转载 作者:可可西里 更新时间:2023-11-01 16:26:43 25 4
gpt4 key购买 nike

编辑:我从问题标题中删除了 faster/more efficient ,因为它具有误导性。我的意图不是优化而是理解数组。抱歉给您带来麻烦!

int array[10][10], i, j;

for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
std::cin>>array[i][j];
}

对比

int array[10][10], i, j;

for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
std::cin>>array[j][i];
}

我很确定答案与数组在硬件级别上的实现方式有关; [ ][ ] 语法只是程序员帮助可视化/建模的抽象。但是,我忘记了上面哪段代码是从开始到结束顺序访问内存块的...

谢谢大家的回答...

只是为了确认我的理解,这是否意味着第一个代码等同于

int array[10][10], k;

for(k=0;k<100;k++)
{
std::cin>>*(array+k);
}

最佳答案

除了等待获取用户输入比数组访问慢得多这一事实之外,第一个更快。

查看 this page on 2D array memory layout如果您想了解有关该主题的更多背景信息。

对于第二个,您正在检查 A[0]、A[10] ... A[1]、A[11]。

第一个顺序是 A[0], A[1], A[2] ..

关于c++ - 在 C++ 中,这是顺序访问二维数组的方式(内存块方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com