它的问题了,如果我使用boost::string_ref过std::string&?我的意思是,boost::string_ref当你处理字符串时,使用std版本真的更有效吗?我真的没有得到这里提供的解释:http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html.让我感到困惑的是这个事实std::string也是一个只指向已分配内存的句柄类,而且由于c ++ 11,使用移动语义,上面文章中提到的复制操作不会发生.那么,哪一个更有效率?
我从未使用过它,在我看来,它的目的是提供一个类似于std::string但不必分配字符串进行操作的接口。以给出的示例为例extract_part():它被赋予一个硬编码的 C 数组"ABCDEFG",但因为初始函数需要一个std::string分配(std::string将有其自己的版本"ABCDEFG")。使用string_ref,不会发生分配,它使用对初始 的引用"ABCDEFG"。限制是该字符串是只读的。
用例为string_ref(或string_view在最近的升压和C++ 17)为子串的引用.
案件在哪里
std::string是一个(典型的)特殊情况,它确实很像std::string const&.
另请注意,string_ref(like sref.substring(...))上的操作会自动返回更多string_ref对象,而不是分配新对象std::string.