以下是一些示例,您可以如何初始化您正在使用的类型的对象。
#include <iostream>
#include <array>
int main()
{
std::array<std::array<int, 2>, 4> elements1 = { 1, 2, 1, 2, 1, 2, 1, 2 };
std::array<std::array<int, 2>, 4> elements2 = { { 1, 2, 1, 2, 1, 2, 1, 2 } };
std::array<std::array<int, 2>, 4> elements3 =
{
{
{ 1, 2 }, { 1, 2 }, { 1, 2 }, { 1, 2 }
}
};
std::array<std::array<int, 2>, 4> elements4 =
{
{
{ { 1, 2 } }, { { 1, 2 } }, { { 1, 2 } }, { { 1, 2 } }
}
};
std::array<std::array<int, 2>, 4> elements5 =
{
{
{ 1, 2 }, 1, 2, 1, 2, { 1, 2 }
}
};
return 0;
}
注意以下来自 C++ 17 标准(11.6.1 聚合)的引用
12 大括号可以在初始化列表中被省略,如下所示。如果
initializer-list 以左大括号开头,然后是后面的
初始化子句的逗号分隔列表初始化元素
子聚合的;有更多是错误的
初始化子句比元素。但是,如果初始化器列表
对于子聚合不以左大括号开头,那么就足够了
列表中的初始化子句用于初始化元素
子集合的;任何剩余的初始化子句都留给
初始化当前聚合的下一个元素
子聚合是一个元素。
std::array 定义为包含另一个聚合的聚合。
这是一个演示程序,使引用更清晰,显示了二维数组的初始化
#include <iostream>
int main()
{
const size_t M = 4, N = 4;
int a[M][N] =
{
{ 1, 2, 3, 4 },
5, 6, 7, 8,
{ 8, 7, 6, 5 },
4, 3, 2, 1,
};
return 0;
}
您可以将std::array<std::array<int, 2>, 4 > 类型的表示想象为以下演示程序中结构 B 的声明。
#include <iostream>
struct A
{
int a[2];
};
struct B
{
A b[4];
};
int main()
{
B b1 =
{
};
B b2 =
{
{
}
};
B b3 =
{
{
{
}
}
};
B b4 =
{
{
{
{ {}, {} }
}
}
};
return 0;
}
调查程序。