如何通过值或常量引用传递 std::string_view
Posted
技术标签:
【中文标题】如何通过值或常量引用传递 std::string_view【英文标题】:How to pass std::string_view by value or by const reference 【发布时间】:2019-10-15 14:57:43 【问题描述】:通常string_view
用于这样的函数参数:
void fval(std::string_view sv);
void fcref(std::string_view const &sv);
哪个更好?
const 引用是 8 个字节,string_view
通常是它的两倍,例如16 字节。
但是,如果不进行内联或优化,const 引用可能有两种间接方式 - 一种用于 ref,第二种用于内部指针。
STL 是怎么做到的?
【问题讨论】:
有趣的是,为什么不投反对票,没有评论?我可以详细说明两种方式至少 1 小时。 一个向下,三个向上。 (我还不能称之为趋势,但是......);-) 【参考方案1】:我们通常按值传递string_view
s。
来自 C++20 草案的示例:
Formatting Time Zone Lookup【讨论】:
我正要问谁是“我们” :) 谢谢马歇尔! 一些解释为什么这可能很好:)以上是关于如何通过值或常量引用传递 std::string_view的主要内容,如果未能解决你的问题,请参考以下文章
SWIG:如何包装 std::string&(通过引用传递的 std::string)
为什么std :: runtime_error的c'tor采用对std :: string的常量引用?