c++ - 使用范围库初始化std::vector

标签 c++ c++20

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

关于c++ - 使用范围库初始化std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61841418/

相关文章:

c++ - 如何使用 winapi 创建一个对话框来选择多个文件?

c++ - GNU Makefile 自动依赖解析

c++ - gcc 11.1.0 范围 header 中缺少 `typename`

c++ - 在C++ 20中按长度排序std::vector <std::string>的代码是否正确?

c++ - 结构类型为 NTTP : why must all members be public?

java - 通过套接字发送 10 MB 的缓冲区 - block 还是整个 10MB?

c++ - 在opencv中使用静态库而不是动态库

c++ - 从 C++ DLL 编辑 Delphi 记录

c++ - 使用 range-v3 读取以逗号分隔的数据行

c++ - std::span 构造函数、libcxx 与 libstdc++、模板与非模板?