首页 > 后端开发 > C++ > 如何在 C 中静态地将二维数组声明为类数据成员?

如何在 C 中静态地将二维数组声明为类数据成员?

Linda Hamilton
发布: 2024-12-11 00:56:12
原创
1016 人浏览过

How Can I Statically Declare a 2D Array as a Class Data Member in C  ?

静态地将二维数组声明为类数据成员

您的目标是创建一个包含数据成员 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板