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`
阅读 2.4k
2 个回答

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

  1. key_type& :避免发生深拷贝,高效;
  2. const key_type& _Keyval :const 属性使形参可接收临时变量(右值),接口使用限制更小。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题