我需要用一个常数值初始化 std::array
的所有元素,就像它可以用 std::vector
。
#include <vector>
#include <array>
int main()
{
std::vector<int> v(10, 7); // OK
std::array<int, 10> a(7); // does not compile, pretty frustrating
}
有没有办法优雅地做到这一点?
现在我正在使用这个:
std::array<int, 10> a;
for (auto & v : a)
v = 7;
但我想避免使用显式代码进行初始化。
原文由 Jabberwocky 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
std::index_sequence
,您可以这样做:随着使用
其中,与
std::fill
解决方案相反,处理非默认可构造类型。