【发布时间】:2017-03-26 01:25:48
【问题描述】:
C++17 的字符串视图为开发人员提供了一种将廉价的非拥有引用传递给实际上可以是faster than const std::string& 的字符串的方法。我可能很天真,但这听起来与 Java 的复制对象的 references 的内置机制非常相似。像 Integer 和 String 这样的内置包装器是不可变的。 Java 的“引用”机制可以保证这些对象在程序的整个生命周期中都将保持相同的值。区别在于 C++,string_view 在这样的程序中是显式的:
void retrieve_an_object (string_view sv) {
}
这比 Java 令人惊讶的(对 C++ 开发人员而言)机制更具自我记录性。但是对于标准和库编写者来说,为 C++ 中每个可以想象的类编写视图类无疑是一个巨大的负担。 C++ 是否可以有一种更专用的方式将对象标记为“仅限视图”而无需编写整个类,如果是这样,为什么不考虑这一点?
【问题讨论】:
-
这不是
std::string的视图,而是连续字符序列的视图。它具有大部分std::string接口,因为这是一致的。 -
const type&是向类提供仅视图接口的最快方法。string_view很特别,因为当您没有std::string时会使用它。
标签: c++