Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么只有字符串视图?_C++ - Fatal编程技术网

C++ 为什么只有字符串视图?

C++ 为什么只有字符串视图?,c++,C++,C++17的字符串视图为开发人员提供了一种方法,可以传递对字符串的廉价的非所有权引用,而该字符串实际上可以是。我可能有点天真,但这听起来很像Java的内置机制,即复制对象的引用。像Integer和String这样的内置包装器是不可变的。Java的“引用”机制可以保证这些对象在程序的整个生命周期中保持相同的值。区别在于C++, StrigyVIEW 在一个程序中是明确的: void retrieve_an_object (string_view sv) { } 这比java的令人惊讶的(C++开

C++17的字符串视图为开发人员提供了一种方法,可以传递对字符串的廉价的非所有权引用,而该字符串实际上可以是。我可能有点天真,但这听起来很像Java的内置机制,即复制对象的引用。像Integer和String这样的内置包装器是不可变的。Java的“引用”机制可以保证这些对象在程序的整个生命周期中保持相同的值。区别在于C++,<代码> StrigyVIEW 在一个程序中是明确的:
void retrieve_an_object (string_view sv) {
}
<>这比java的令人惊讶的(C++开发者)机制更能自我记录。但是,标准和库作者对C++中每一个可想象的类编写视图类,这无疑是一个巨大的负担。C++是否可能有一种更为专用的方法,将对象标记为“仅视图”而不必编写整个类,如果是,为什么将其从考虑中删除?

< P>视图类(<代码> StrigyView < /Cube >,<代码> ARRAYView < /C> >)意在对所呈现的对象的部分给予(只读)访问。 它就像一个
常量&
,包含关于不同开始和结束的附加信息

C++有一种只查看对象的专用方法:
const&
。(以及
std::reference_wrapper


如果您只想访问某些数据结构的特定部分,则需要一个专门的视图类,该类知道应该提供哪些部分,这本身并不是完全可以概括的

它不是std::string的视图,而是连续字符序列的视图。它有大部分的
std::string接口,因为这是一致的。
const type&
是向类提供仅视图接口的最快方法
string\u视图
是特殊的,因为您在没有
std::string
的情况下使用它。可能会重复