在此代码段中,我想用一系列连续的整数初始化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中实现吗?
答案 0 :(得分:5)
您正在寻找的是
auto b=std::ranges::to<std::vector>(std::ranges::iota_view(0, 5));
不幸的是,proposal错过了C ++ 20仅仅是因为没有时间检查其措辞(在以前的版本中添加了您尝试过的构造函数之后,发现它不可行)。希望它可以在C ++ 23周期的早期进行合并和实现。