我想std::vector使用一系列连续整数进行初始化,而不键入所有整数,例如在此代码片段中无法编译的第二行:
std::vector<int> a{0, 1, 2, 3, 4, 5};
std::vector<int> b{std::ranges::iota_view(0, 5)}; // ERROR!
Run Code Online (Sandbox Code Playgroud)
当然,我更喜欢:
std::vector<int> b{0:5};
Run Code Online (Sandbox Code Playgroud)
但这不是在 C++41 标准之前安排的。任何想法如何在 C++20 中做到这一点?
你要找的是
auto b=std::ranges::to<std::vector>(std::ranges::iota_view(0, 5));
Run Code Online (Sandbox Code Playgroud)
不幸的是,该提案错过了 C++20 仅仅是因为没有时间审查其措辞(在添加您尝试过的构造函数的先前版本被发现不可行之后)。希望它会在 C++23 周期的早期被合并和实现。
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |