容器肯定是概念上的范围吗?

szx*_*pmj 12 c++ standards language-design range-v3 c++-experimental

range-v3的文档中:

view::all

返回包含源中所有元素的范围.用于将容器转换为范围.

让我困惑的是:

  1. 在什么情况下view::all使用?
  2. 标准容器(std::vector,std::list等)在概念上不是范围吗?

例如:

auto coll = std::vector{ 1, 2, 2, 3 };  
view::all(coll) | view::unique; // version 1
coll | view::unique; // version 2
Run Code Online (Sandbox Code Playgroud)

有什么区别version 1version 2

Eri*_*ler 13

Egad,自range-v3切换术语以来,该部分文档尚未更新.是的,容器是一个Range(它有begin()并且end()返回一个迭代器/哨兵对).它不是视图(具有O(1)复制/移动的范围).因此,文档view::all应阅读:

view::all

返回包含源中所有元素的视图.用于将容器转换为视图.

要回答第二个问题,代码中的版本1和版本2之间没有区别.