温馨提示×

温馨提示×

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

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

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

发布时间:2024-07-19 11:16:06 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

下面是一个简单的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来创建不同维度的数组。可以通过传入一个包含各个维度下标的向量来访问和修改数组中的元素。

向AI问一下细节

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

c++
AI