容器在概念上一定是一个范围吗?
Is a container sure to be a range conceptually?
来自 ranges-v3 的文档:
view::all
Return a range containing all the elements in the source.
Useful for converting containers to ranges.
让我困惑的是:
- 在什么场景下使用
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
有区别吗?
天哪,自从 range-v3 切换术语以来,文档的那部分内容还没有更新。是的,容器是一个范围(它有 begin()
和 end()
,return 和 iterator/sentinel 对)。它不是视图(具有 O(1) copy/move 的范围)。因此,view::all
的文档应为:
view::all
Return a View containing all the elements in the source. Useful for converting containers to Views.
回答你的第二个问题,不,你的代码中版本 1 和版本 2 没有区别。
来自 ranges-v3 的文档:
view::all
Return a range containing all the elements in the source. Useful for converting containers to ranges.
让我困惑的是:
- 在什么场景下使用
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
有区别吗?
天哪,自从 range-v3 切换术语以来,文档的那部分内容还没有更新。是的,容器是一个范围(它有 begin()
和 end()
,return 和 iterator/sentinel 对)。它不是视图(具有 O(1) copy/move 的范围)。因此,view::all
的文档应为:
view::all
Return a View containing all the elements in the source. Useful for converting containers to Views.
回答你的第二个问题,不,你的代码中版本 1 和版本 2 没有区别。