std::array<int,4> myInts;
std::array<bool,2> myBools;
myInts
和myBools
的元素可以假设为0和0,或者我应该手动fill
数组吗?
答案 0 :(得分:12)
元素将设置为随机值,但您可以确保将值初始化为这样:
std::array<int,4> myInts{}; // all zeroes
std::array<bool,2> myBools{}; // all false
因此不必重置元素,可以将它们初始化为特定值。您还可以将元素初始化为不同的值:
std::array<int,4> myInts{1,2,33,44};
std::array<bool,2> myBools{true, false};
如果元素的数量少于初始化列表中数组的大小,则缺少的元素初始化为零:
std::array<int,4> myInts{1,2}; // array contains 1,2,0,0
注意该标准指定std::array
是一个聚合,并且有一些示例代码,表明它实现为具有数组数据成员。它声称这只是为了强调类型是一个聚合,但是如果使用了这个实现(并且GCC使用它),那么你需要一组额外的大括号,因为你正在初始化std::array
内的数组: / p>
std::array<int,4> myInts{ {1,2,33,44} };
另一方面,此案例有资格获得大括号,因此额外的大括号不是强制性的。