在结构初始化中传递数组
Passing an array in struct initialization
我想创建一个包含 int 和 int 数组的结构。所以我把它定义成
struct my_struct {
int N ;
int arr[30] ;
int arr[30][30] ;
}
然后我想用一个我已经定义和初始化的数组来初始化它,例如
int my_arr[30] ;
for (int i = 0; i < 30; ++i)
{
my_arr[i] = i ;
}
然后我想我可以将结构初始化为
my_struct A = {30,my_arr}
但它似乎不起作用(给出转换错误)。
P.s。以及它如何与二维数组一起使用?
数组不能是copy-initialised。这不是特定于作为 class 成员的数组;同样可以这样重现:
int a[30] = {};
int b[30] = a; // ill-formed
您可以像这样初始化数组元素:
my_struct A = {30, {my_arr[0], my_arr[1], my_arr[2], //...
但这并不总是很方便。或者,您可以像最初那样使用循环分配数组值。您也不必编写循环,有一个称为 std::copy
.
的标准算法
我想创建一个包含 int 和 int 数组的结构。所以我把它定义成
struct my_struct {
int N ;
int arr[30] ;
int arr[30][30] ;
}
然后我想用一个我已经定义和初始化的数组来初始化它,例如
int my_arr[30] ;
for (int i = 0; i < 30; ++i)
{
my_arr[i] = i ;
}
然后我想我可以将结构初始化为
my_struct A = {30,my_arr}
但它似乎不起作用(给出转换错误)。 P.s。以及它如何与二维数组一起使用?
数组不能是copy-initialised。这不是特定于作为 class 成员的数组;同样可以这样重现:
int a[30] = {};
int b[30] = a; // ill-formed
您可以像这样初始化数组元素:
my_struct A = {30, {my_arr[0], my_arr[1], my_arr[2], //...
但这并不总是很方便。或者,您可以像最初那样使用循环分配数组值。您也不必编写循环,有一个称为 std::copy
.