文档目录
auto pipeline = data
    | std::views::filter([](int x) { return x % 2 == 0; })
    | std::views::transform([](int x) { return x * 10; })
    | std::views::take(3);

for (int x : pipeline) {
    std::cout << x;
}

for 循环中每次迭代发生了什么:

第 1 次迭代:
  take 问 transform:"给我下一个值"
  transform 问 filter:"给我下一个值"
  filter 问 data:"给我下一个值"
  data 给 filter:1 → filter 检查 1%2==0?→ false → "跳过,下一个"
  data 给 filter:2 → filter 检查 2%2==0?→ true → 把 2 给 transform
  transform 计算 2*10=20 → 把 20 给 take
  take 计数 1/3 → 把 20 吐给 for 循环
  cout << 20

第 2 次迭代:
  take 问 transform:再给我一个
  transform 问 filter:再给我一个
  data 给 filter:3 → false → 跳过
  data 给 filter:4 → true → transform → 40 → take(2/3) → cout

第 3 次迭代:
  同样得到 60 → 输出
  take 计数到达 3 → 告诉 for:"结束了"

总共遍历了 data 的前 6 个元素(到 6),而非全部 data。

关键:每次只处理一个元素通过整个管道,管道中的每个"站"都是按需工作。最坏情况下只遍历 data 一遍。