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

Initializing std::vector with ranges library

本文关键字:vector std 初始化 使用范围      更新时间:2023-10-16

我想用一系列连续的整数初始化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 周期的早期合并并实施。

相关文章: