是否必须重置std :: array元素?

And*_*eas 5 c++ arrays initialization

std::array<int,4> myInts;
std::array<bool,2> myBools;
Run Code Online (Sandbox Code Playgroud)

可以的元素myIntsmyBools被假定为假和0,或者我应该fill手动阵列?

jua*_*nza 12

元素将设置为随机值,但您可以确保将值初始化为如下:

std::array<int,4> myInts{}; // all zeroes
std::array<bool,2> myBools{}; // all false
Run Code Online (Sandbox Code Playgroud)

因此,不必重置元素,可以将它们初始化为特定值.您还可以将元素初始化为不同的值:

std::array<int,4> myInts{1,2,33,44};
std::array<bool,2> myBools{true, false};
Run Code Online (Sandbox Code Playgroud)

如果元素大于初始化列表中数组的大小,则缺少的元素初始化为零:

std::array<int,4> myInts{1,2}; // array contains 1,2,0,0
Run Code Online (Sandbox Code Playgroud)

注意标准指定它std::array是一个聚合,并且有一些示例代码,它显示它实现为具有数组数据成员.它声称这只是为了强调类型是一个聚合,但是如果使用这个实现(并且GCC使用它)那么你需要一组额外的大括号,因为你正在初始化以下内部的数组std::array:

std::array<int,4> myInts{ {1,2,33,44} };
Run Code Online (Sandbox Code Playgroud)

另一方面,这种情况符合大括号的要求,因此额外的大括号不是强制性的.