二维数组访问/修改时间常数?

时间:2017-03-02 23:56:13

标签: c++ arrays time

在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吗?

1 个答案:

答案 0 :(得分:1)

取决于

操作不是。 data[x][y]变为*(data * max_y + y)

虽然它会导致缓存未命中或类似的情况,但它可能会有所不同。如果data足够大,它可以使预取器和缓存共享无效。根据具体情况,两者都可以极大地影响速度。