我想用一系列连续的整数初始化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中实现吗?
你要寻找的是:auto b=std::ranges::to<std::vector>(std::ranges::iota_view(0, 5)); 很遗憾,由于没有时间审核其措辞(在先前添加了您尝试的构造函数但被发现无法工作的版本之后),那个提案未能赶上C++20。希望在C++23周期早期将其合并和实现。
auto v = std::views::iota(0, 5); auto b = std::vector(v.begin(), v.end());
- J. Willus