"范围"之间的区别是什么?和"视图"在rangev3 ts?

时间:2018-03-02 21:15:37

标签: c++ range-v3

"范围"之间的区别是什么?和"视图"在rangev3 ts?

在G搜索中找不到任何类似的答案。猜猜我正在努力解决每个人应该做的事情:

情况(在c ++中说)是范围'是-a'查看,反之亦然?

只是视图是只读范围吗?或者也许是"元素"在范围内(当您取消引用迭代器时得到的)是一个而不是另一个吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

来自文档,a range is

  

一个范围可以被宽泛地想象为一对迭代器,尽管它们不需要那样实现。

  

视图是一个轻量级的包装器,它以某种自定义方式呈现基础元素序列的视图,而不会发生变异或复制。视图创建和复制起来很便宜,并且具有非拥有的引用语义。

视图范围,只是有更多限制。

TS中更正式的定义包括RangeView概念。基本上,范围是可迭代的,并且视图是半规则的范围并具有恒定时间复制/移动/赋值/开始/结束/ ...

例如,std::vector<char>std::stringstd::string_view都是范围,但只有最后一个也是视图。