自定义C++ Array类以支持多维数组

发布时间:2024-07-19 11:16:06 作者:小樊
来源:亿速云 阅读:83

下面是一个简单的C++ Array类,用于支持多维数组:

#include <vector>

template <typename T>
class Array {
private:
    std::vector<T> data;
    std::vector<size_t> shape;

public:
    Array(const std::vector<size_t>& shape) : shape(shape) {
        size_t size = 1;
        for (size_t s : shape) {
            size *= s;
        }
        data.resize(size);
    }

    T& operator()(const std::vector<size_t>& indices) {
        size_t index = 0;
        size_t multiplier = 1;
        for (size_t i = 0; i < indices.size(); i++) {
            index += indices[i] * multiplier;
            multiplier *= shape[i];
        }
        return data[index];
    }
};

使用示例:

int main() {
    Array<int> arr({2, 3});
    arr({0, 0}) = 1;
    arr({0, 1}) = 2;
    arr({0, 2}) = 3;
    arr({1, 0}) = 4;
    arr({1, 1}) = 5;
    arr({1, 2}) = 6;

    std::cout << arr({0, 0}) << std::endl;
    std::cout << arr({0, 1}) << std::endl;
    std::cout << arr({0, 2}) << std::endl;
    std::cout << arr({1, 0}) << std::endl;
    std::cout << arr({1, 1}) << std::endl;
    std::cout << arr({1, 2}) << std::endl;

    return 0;
}

这个Array类实现了一个简单的多维数组,可以通过传入不同维度的shape来创建不同维度的数组。可以通过传入一个包含各个维度下标的向量来访问和修改数组中的元素。

推荐阅读:
  1. php中怎么利用uasort()自定义排序 多维数组
  2. C#中怎么定义和初始化数组

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:C++ Array类在文件读写操作中的使用

下一篇:C++中Array类与C++23新特性的预期

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》