寻找具有连续整数的 std::initializer_list 的快捷方式

问题描述 投票:0回答:1

我有一堆较长的手工初始化数组,例如:

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)};
...
c++ initializer-list iota
1个回答
0
投票

您可以使用 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;
}();
© www.soinside.com 2019 - 2024. All rights reserved.