正在使用范围库初始化 std::vector
Initializing std::vector with ranges library
我想用一系列连续的整数初始化 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));
不幸的是,proposal 错过了 C++20,仅仅是因为没有时间复习它的措辞(在添加了您尝试过的构造函数的先前版本被发现不可用之后)。希望它能在 C++23 周期的早期被合并和实现。
我想用一系列连续的整数初始化 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));
不幸的是,proposal 错过了 C++20,仅仅是因为没有时间复习它的措辞(在添加了您尝试过的构造函数的先前版本被发现不可用之后)。希望它能在 C++23 周期的早期被合并和实现。