文档目录
std::vector<int> data = {1, 2, 3, 4, 5};

// view(视图):不拥有数据,不分配内存
auto v = data | std::views::filter([](int x) { return x % 2 == 1; });
// 此时什么也没发生!v 只是记住了 data 的引用和 filter 条件

for (int x : v) { // 遍历时才触发计算
    std::cout << x; // 1 3 5
}

// container(容器):拥有数据,分配内存
std::vector<int> c;
std::copy_if(data.begin(), data.end(), std::back_inserter(c),
             [](int x) { return x % 2 == 1; });
// 此时已经完成了筛选,c 持有 [1, 3, 5]

一句话区分:view 像 string_view——只是看一眼,不拿过来。container 像 string——复制一份归自己所有。