哪个更好,单 for 循环或双 for 循环迭代二维数组? C++

Posted

技术标签:

【中文标题】哪个更好,单 for 循环或双 for 循环迭代二维数组? C++【英文标题】:Which is better, a single for loop or double for loop to iterate through 2-D array? C++ 【发布时间】:2020-04-09 23:25:46 【问题描述】:

假设我有一个 9×9 二维数组。使用单个循环或多个循环进行循环之间有区别吗?

for (int i = 0; i < 81; i++)
  currentEdit[i / 9][i % 9] = 0;

VS.

for (int i = 0; i < 9; i++)
   for (int j = 0; j < 9; j++)
      currentEdit[i][j] = 0;

【问题讨论】:

嗯,第一个使用除法,第二个没有。假设编译器不仅自己使它们相同,那么第二个会更好,因为它没有除法,并且更易于阅读。 第二组循环会产生更好的组装。但老实说,除非这非常关键,否则我认为它不会有太大的不同。 你不应该假设内存布局,代码应该是透明的,它实际上在做什么。第二版。 必须是二维数组吗? 【参考方案1】:

正确的选择是多循环。请记住,它执行的操作要少得多,因为它不必划分或计算模块来访问数组位置。

这是正确的选择:

for (int i = 0; i < 9; i++)
   for (int j = 0; j < 9; j++)
      currentEdit[i][j] = 0;

【讨论】:

以上是关于哪个更好,单 for 循环或双 for 循环迭代二维数组? C++的主要内容,如果未能解决你的问题,请参考以下文章

哪个“for”循环具有更好的时间复杂度?

哪个更有效,for-each 循环还是迭代器?

哪个库用于迭代 1M*1k 次的并行 for 循环,OpenMP 或 boost::thread?

2优先使用for-each循环

python-迭代器协议和for循环工作机制

迭代器协议和for循环工作机制