"范围"之间的区别是什么?和"视图"在rangev3 ts?
在G搜索中找不到任何类似的答案。猜猜我正在努力解决每个人应该做的事情:
情况(在c ++中说)是范围'是-a'查看,反之亦然?
只是视图是只读范围吗?或者也许是"元素"在范围内(当您取消引用迭代器时得到的)是一个而不是另一个吗?
谢谢!
答案 0 :(得分:5)
来自文档,a range is:
一个范围可以被宽泛地想象为一对迭代器,尽管它们不需要那样实现。
和
视图是一个轻量级的包装器,它以某种自定义方式呈现基础元素序列的视图,而不会发生变异或复制。视图创建和复制起来很便宜,并且具有非拥有的引用语义。
视图是范围,只是有更多限制。
TS中更正式的定义包括Range和View概念。基本上,范围是可迭代的,并且视图是半规则的范围并具有恒定时间复制/移动/赋值/开始/结束/ ...
例如,std::vector<char>
,std::string
和std::string_view
都是范围,但只有最后一个也是视图。