如何替换重复索引计算公式

时间:2016-03-11 15:18:53

标签: c++

在我的代码中,我经常使用一个公式来返回一个2D数组的索引:

cells[cellToMarkX + cellToMarkY * xSize] 
// ...
if (cells[j + i * xSize] == 0)
//...
else if (cells[j + i * xSize] >= 5)
//..
cells[cellToMarkX + cellToMarkY * xSize] += 4;

我不确定是否应该创建一些像

这样的功能
getCell(int x, int y)

或者应该是不必要的,我更喜欢使用宏?

1 个答案:

答案 0 :(得分:1)

特别是在您提供的示例中,您可能还需要考虑预先计算,如:

int myindex = j + i * xSize;
if (cells[myindex] == 0)
....
else if (cells[myindex] >= 5)

但是为了更直接地回答你的问题,函数调用在这里并不合适,特别是如果你使用inline属性声明它。在许多情况下,无论您使用的是宏还是函数,优秀的优化编译器都会生成相同的代码,但这当然取决于实现。

就个人而言,我更喜欢一种功能。