静态声明的二维数组C ++作为类的数据成员

use*_*912 1 c++ arrays multidimensional-array

我正在尝试创建一个class grid包含数据成员的unsigned NRunsigned NC它还应该包含一个2D数组double Coordiantes[NR][NC]。我希望初始化数据成员NR,并NC通过类的构造函数。我试图避免二维数组的动态分配,因为我更喜欢连续内存分配,以便尽可能避免缓存丢失。

我不确定是否可以,但是任何输入都会有所帮助。

dou*_*oug 5

class Array2D {
public:
    vector<int> v;
    int nc;
    Array2D(int NR, int NC) : v(NR*NC), nc(NC) {}
    int* operator[](int r) { return &v[r*nc]; }
};

int main()
{
    Array2D array2d(2, 3);
    array2d[0][0] = 1;
    array2d[1][2] = 6;
}
Run Code Online (Sandbox Code Playgroud)

这使您可以创建一个功能类似于2D数组的类。它速度快,数据连续。