我正在阅读string_view的源代码,发现operator ==按值接受参数。
template<typename _CharT, typename _Traits>
constexpr bool
operator==(basic_string_view<_CharT, _Traits> __x,
basic_string_view<_CharT, _Traits> __y) noexcept
{ return __x.size() == __y.size() && __x.compare(__y) == 0; }
为什么它按值而不是const引用接受参数?
最佳答案
Why does string_view::operator== accepts parameters by value
因为这是传递未经修改且复制成本低的参数的推荐方法。
无需支付引用引入的间接费用-也就是说,在大多数情况下,该函数可以内联扩展,在这种情况下,这实际上并不重要。
Isn't passing by reference cheaper?
一般而言:这取决于。在字符串 View 的情况下:可能不是。
关于c++ - 为什么string_view::operator ==按值接受参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62174478/