来自ranges-v3的文档:
view::all
返回包含源中所有元素的范围。 用于将容器转换为范围。
令我困惑的是:
view::all
使用的情况下?std::vector
,std::list
等)不是
概念范围?例如:
auto coll = std::vector{ 1, 2, 2, 3 };
view::all(coll) | view::unique; // version 1
coll | view::unique; // version 2
version 1
和version 2
之间有什么区别吗?
答案 0 :(得分:12)
Egad,自range-v3切换术语以来,该部分文档尚未更新。是的,容器是一个Range(它有begin()
和end()
返回迭代器/ sentinel对)。它不是视图(具有O(1)复制/移动的范围)。因此,view::all
的文档应为:
view::all
返回包含源中所有元素的视图。用于将容器转换为视图。
要回答第二个问题,代码中的版本1和版本2之间没有区别。