问题 使用initializer_list初始化数组? [重复]


这个问题在这里已有答案:


8143
2018-03-19 11:32


起源

这是不可能的,作为一种解决方法,手动复制的元素 initializer_list: A (std::initializer_list<int> l) /*Don't initialize m_a*/ { std::copy(l.begin(),l.end(),m_a.begin());} - Mankarse
请注意,这对构造函数来说并不特殊;出现同样的问题 std::initializer_list<int> x = { 1, 2 }; std::array<int, 2> m { ?????? }; 。你只能在这里放置聚合初始化的一部分,即每个元素的初始化器一个接一个。 - M.M
看到 stackoverflow.com/q/5549524/1436796 这也提供了一种可能的解决方案,即使成员数组应该是合格的 const (取消资格将其留空,然后再复制列表内容)。 - Marc van Leeuwen


答案:


不是在这种情况下。你可以初始化 array 用一个 列表初始化

std::array<int, 2> a{1,2};

但你无法初始化 array 同 initializer_list从那以后 array 只是一个聚合类型,只有默认和复制构造函数。

您可以将数组保留为空,然后复制该数据的内容 initializer_list 进去。


14
2018-03-19 11:35