静态声明的二维数组C++为类的数据成员
Statically declared 2-D array C++ as data member of a class
我正在尝试创建一个包含数据成员unsigned NR
class grid
,unsigned NC
它还应该包含一个 2D 数组double Coordiantes[NR][NC]
。我希望通过类构造函数NR
和NC
初始化数据成员。我正在尝试避免 2-D 数组的动态分配,因为我更喜欢连续的内存分配,以便尽可能避免缓存未命中。
我不确定这是否可能,但任何输入都会有所帮助。
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;
}
这允许您创建一个类似于 2D 数组的类。它速度快,数据是连续的。
我建议你简单地使用std::vector<double>(NC*NR)
。
并按coord.at(i*NC + j)
(或coord[i*NC + j]
,当您的代码正确并且想要从中收集性能时)索引到它。
您将获得连续的内存和缓存友好循环,而无需执行自己的内存分配。如果可能的话,总是更喜欢RAII。
相关文章:
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- visual 将文件中的数据存储到C++中的二维数组中
- 将二维数组从数据文件传递给函数并输出内容
- 如何在二维数组中存储数据并使用2个循环显示二维
- 静态声明的二维数组C++为类的数据成员
- 二维数组的 MPI 数据类型
- 将指向数据的指针作为参数传递给期望二维数组的函数
- 如何在大型二维数组中存储数据
- 如何使用二进制搜索C++从二维数组中输出数据
- 无法将二维数组中的数据打印到C++的输出文件
- 如何在C++中为矢量数据结构中的二维数组获取用户输入,而不使用行和列上的两个for循环
- 为什么我将数字数据从文本文件导入二维数组的代码不起作用
- 如何在动态二维数组中存储数据,在结构体中声明,该结构体也被c++中的另一个结构体使用
- 二维数组作为类成员