使用范围库初始化std :: vector

时间:2020-05-16 18:08:37

标签: c++ c++20

在此代码段中,我想用一系列连续的整数初始化std::vector而不键入所有整数,例如第二行,该行未编译:

  std::vector<int> a{0, 1, 2, 3, 4, 5};
  std::vector<int> b{std::ranges::iota_view(0, 5)};  // ERROR!

当然,我会更喜欢:

  std::vector<int> b{0:5};

,但是这不是C ++ 41标准之前的计划。有任何想法如何在C ++ 20中实现吗?

1 个答案:

答案 0 :(得分:5)

您正在寻找的是

auto b=std::ranges::to<std::vector>(std::ranges::iota_view(0, 5));

不幸的是,proposal错过了C ++ 20仅仅是因为没有时间检查其措辞(在以前的版本中添加了您尝试过的构造函数之后,发现它不可行)。希望它可以在C ++ 23周期的早期进行合并和实现。