为什么只有字符串视图

时间:2017-03-26 01:25:48

标签: c++

C ++ 17的字符串视图为开发人员提供了一种方法,可以将廉价的非拥有引用传递给实际为faster than const std::string&的字符串。我可能很天真,但这听起来非常类似于Java的内置机制来复制对象的引用。像Integer和String这样的内置包装器是不可变的。 Java的“引用”机制可以保证这些对象在程序的整个生命周期中保持相同的值。区别在于C ++,string_view在如下程序中是显式的:

void retrieve_an_object (string_view sv) {
}

这比Java令人惊讶的(对于C ++开发人员)机制更加自我记录。但对于标准和库编写者来说,为C ++中的每个可想到的类编写一个视图类肯定是一个巨大的负担。 C ++可能有一种更专用的方式将对象标记为“仅查看”而无需编写整个类,如果是这样,为什么不考虑这个?

1 个答案:

答案 0 :(得分:3)

视图类(string_viewarray_view)旨在提供(只读)对其所呈现对象的部分的访问权。
它就像一个const &,其中包含有关不同开头和结尾的其他信息。

C ++为仅查看对象提供了专用方法:const &。 (以及std::reference_wrapper<const T>

如果您只想访问某些数据结构的特定部分,则需要一个专用的视图类,该类知道哪些部分应该可用,这本身并不是一般的。