gpt4 book ai didi

c++ - 如何通过自定义结构传递数组初始化?

转载 作者:行者123 更新时间:2023-12-03 06:51:26 25 4
gpt4 key购买 nike

通常数组可以这样初始化:

int ooo[3][3] =
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
我需要像这样将它隐藏到自定义结构中:
template <typename T, size_t dim1, size_t dim2>
struct MyStruct
{
private:
T m_data[dim1][dim2];
};
如何像傻瓜一样将初始化传递给数组?
MyStruct<int, 3, 3> s = 
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};

最佳答案

您可以向类添加一个构造函数,该构造函数接受一个 2D 数组参数,并将其复制到数组成员中:

template <typename T, size_t dim1, size_t dim2>
struct MyStruct
{
private:
T m_data[dim1][dim2];
public:
MyStruct(T const (&a)[dim1][dim2]) {
for (int i = 0; i < dim1; ++i)
for (int j = 0; j < dim2; ++j)
m_data[i][j] = a[i][j];
}
};
您还需要在调用站点添加一对额外的大括号。
这是一个 demo .

关于c++ - 如何通过自定义结构传递数组初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63996603/

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