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

r w*_*bby 0 c++ range-v3

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

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

是这样的(在c ++中说)范围'是'a'视图,反之亦然?

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

谢谢!

Bar*_*rry 5

从文档中,范围是:

范围可以松散地考虑一对迭代器,尽管它们不需要以这种方式实现.

和:

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

视图一个范围,只是有更多的限制.

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

例如,std::vector<char>,std::string,和std::string_view全范围,但只有最后一个也是视图.