当前位置:   article > 正文

std::map find 陷阱_->second 会有拷贝吗

->second 会有拷贝吗

正确做法

std::map<int,int*>::iterator iter = mapTemp.find(i);

if( mapTemp.end() != iter )
    return iter->second;

return NULL;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.注意判断空,如果不判断是否为mapTemp.end(),如果用mapTemp[x].second方式获取,系统会自己偷偷插入一个查询的键。 因此直接 return mapTemp[x].second 有很大风险。

2.尽量用iterator 而不是[].因为[] 运算符内部有一次查询,最好就是调用一次find,返回iterator,根据iterator获取值。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/992057
推荐阅读
相关标签
  

闽ICP备14008679号