在C ++时间常数中访问或修改2D数组中的元素吗?
例如:
/* C++ */
int nRow, nColumn;
int **data;
...
void set (int x, int y, int n) {
data[x][y] = n;
}
int get (int x, int y) {
return data[x][y];
}
此时间取决于nRow
和/或nColumn
吗?
答案 0 :(得分:1)
取决于
操作不是。 data[x][y]
变为*(data * max_y + y)
。
虽然它会导致缓存未命中或类似的情况,但它可能会有所不同。如果data
足够大,它可以使预取器和缓存共享无效。根据具体情况,两者都可以极大地影响速度。