gpt4 book ai didi

c++ - 如何覆盖 [] 使我的类看起来就像一个 3 维矩阵

转载 作者:行者123 更新时间:2023-11-30 05:44:52 24 4
gpt4 key购买 nike

<分区>

我一直在尝试创建一个 3 维类。我想让它看起来像这样:

 Mat A;
A[3][4][5] = 1;

当矩阵为二维时,我可以像

这样使用代码
int* const operator [] (const int& i)
{
//printf("in []\n");
return a[i];
}

但是当矩阵是 3 维或更多维时情况如何?(我知道也许这可以通过定义 2 类来解决,但我想知道如何通过定义 1 个类来解决这个问题?)


感谢 Ophir Gvirtzer,我已经尝试了他的代码,它的工作方式如下

template <size_t D>
class Mat : public std::vector<Mat<D-1>>
{
public:
Mat() : std::vector<Mat<D-1>>() {};
Mat(std::array<size_t,D> sz)
{
std::array<size_t, D-1> restSz;
std::copy(sz.begin()+1, sz.end(),restSz.begin());
for (auto idx=0; idx< sz[0]; idx++)
this->emplace_back(restSz);
}
};

template <>
class Mat<1> : public std::vector<float>
{
public:
Mat() : std::vector<float>() {};
Mat(std::array<size_t,1> sz) : std::vector<float>(sz[0]) {};
};

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com