文档目录
C++20 Ranges & Views
目标:用函数式管道风格替代传统迭代器循环,写出表达力更强、性能不损失的代码。
-
2.1 Ranges 核心概念
view(惰性求值) vscontainer(持有所有权)。- sentinel(哨兵迭代器)的底层差异。
begin/end迭代器与哨兵的类型解耦优势。
-
2.2 常用 Views
std::views::filter、transform、take、drop、reverse、join、split。- 管道组合
vec | filter(...) | transform(...) | take(5)。
-
2.3 惰性求值性能优势
- 为什么 Ranges 不会产生中间临时容器?
- 对比
std::copy_if+std::transform多次遍历。
-
2.4 自定义 View 适配器
- 实现一个
splitview(按分隔符分割字符串)。 view_interface基类的作用。
- 实现一个