gpt4 book ai didi

c++ - C/C++ : "Grid[x + y * width]" versus "Grid[x][y]"

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:03 25 4
gpt4 key购买 nike

这是非常具体的,几乎没有任何影响,但它一直困扰着我,因为我不知道哪个通常更好。我希望你们这些好人能帮我解决一个问题:

Something ** grid; grid[x][y];
Something * grid; grid[x + y * width];

我知道任何编程过的人都曾在某个时候创建​​过二维数组。你选择了哪一个,是什么让你走上了这条路?或者您可能完全使用了另一种形式?

最佳答案

通常首选第二种方法,原因有很多:

  • 单个乘法比额外的数组解引用快一点
  • 由于缓存命中,保持数组连续也会略微提高速度
  • 在许多情况下,例如加载位图文件或处理 DirectX/OpenGL 表面,有必要将 2D 表面保存在一个连续的内存块中。
  • 只需要一次数组分配/释放
  • 通常,处理指针比处理指针到指针更容易

正如其他几个人所提到的,如果您在编译时知道宽度,则将变量声明为 int grid[][width] 将为您提供上述所有优点,语法更好.显然,如果宽度是动态的,这不是一个选项。

关于c++ - C/C++ : "Grid[x + y * width]" versus "Grid[x][y]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5025696/

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