如大家所了解的View的轻量级可以体现在多个方面。它拥有常量时间复杂度的构造复制移动操作。大多数view是以视图为设计理念进行对数据的处理和操作。其不保有原始数据也不会产生原始数据的副本。因此在内存开销方面也是常量级的。下面是一段简单的代码验证 view 是否会产生副作用如是否影响原数据。#include iostream #include ranges #include vector int main() { std::vector arr {1, 2, 3, 4, 5}; auto res std::ranges::views::transform(arr, [](int x) { return x * x; }); // 原始数据不会更改 std::cout Original vector: std::endl; for (int x : arr) { std::cout x ; } std::cout std::endl; std::cout Handle view: std::endl; for (int x : res) { std::cout x ; } std::cout std::endl; }输出结果为Original vector: 1 2 3 4 5 Handle view: 1 4 9 16 25可见此处view的操作并没有原始的vector中的数据。