H5W3
当前位置:H5W3 > 其他技术问题 > 正文

c++迭代器iterator的find函数的输入参数“&”代表什么含意?

map结构对应的find,按F12,弹出代码:

    iterator find(const key_type& _Keyval)
        {    // find an element in mutable sequence that matches _Keyval
        iterator _Where = lower_bound(_Keyval);
        return (_Where == end()
            || _DEBUG_LT_PRED(this->_Getcomp(),
                _Keyval, this->_Key(_Where._Mynode()))
                    ? end() : _Where);
        }

请问输入参数里面的”&”是什么含意?

`const key_type& _Keyval`

回答:

& 代表引用传递,这样可以在函数内对传递进来的值进行修改,但在这个函数被设置成了 const ,所以是不可修改的。在 find 函数中使用主要是为了不会因为执行 find 复制多一份值,如果 key_type 是基本值类型还好,但如果 key_type 是类,就可能会造成效率的下降或错误的查找结果。

回答:

  1. key_type& :避免发生深拷贝,高效;
  2. const key_type& _Keyval :const 属性使形参可接收临时变量(右值),接口使用限制更小。

本文地址:H5W3 » c++迭代器iterator的find函数的输入参数“&”代表什么含意?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址