我有一堆较长的手工初始化数组,例如:
const std::array<int, 16> a{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
const std::array<int, 16> b{16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
...
有没有一种更简洁的初始化方法,例如沿着这些思路(非法):
const std::array<int, 16> a{std::views::iota(0, 16)};
const std::array<int, 16> b{std::views::iota(16, 32)};
...
您可以使用 lambda 来初始化数组
iota_view
:
constexpr std::array a = [] {
constexpr auto iota = std::views::iota(0, 16);
std::array<int, iota.size()> a;
std::ranges::copy(iota, a.begin());
return a;
}();