您的目标是创建一个包含数据成员 NR、NC 和二维数组坐标的网格类[NR][NC]。您希望通过类构造函数初始化 NR 和 NC,并避免动态内存分配,以优化内存使用并最大限度地减少缓存未命中。
要实现此目的,请考虑使用 std::vector,它提供连续内存分配。这是代码片段的修改版本:
class grid { public: vector<double> coordinates; unsigned NR, NC; grid(unsigned NR, unsigned NC) : NR(NR), NC(NC), coordinates(NR * NC) {} double& operator()(unsigned r, unsigned c) { return coordinates[r * NC + c]; } }; int main() { grid g(2, 3); g(0, 0) = 1; g(1, 2) = 6; }
此类使用连续向量定义二维数组。 operator() 方法提供了一种使用行索引和列索引访问元素的便捷方法。
这种方法避免了动态分配,提供连续的内存分配,并确保高效的内存使用。
以上是如何在 C 中静态地将二维数组声明为类数据成员?的详细内容。更多信息请关注PHP中文网其他相关文章!