是否必须重置 std::数组元素


std::array<int,4> myInts;
std::array<bool,2> myBools;

是否可以假定 myIntsmyBools 的元素为 false 和 0,或者我应该手动fill数组?

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

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内的数组:

std::array<int,4> myInts{ {1,2,33,44} };

另一方面,这种情况符合大括号消除的条件,因此额外的牙套不是强制性的。

最新更新