您的位置:首页 > 其它

std::map find 陷阱

2016-05-17 11:46 260 查看
正确做法

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

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

return NULL;


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

2.尽量用iterator 而不是[].因为[] 运算符内部有一次查询,最好就是调用一次find,返回iterator,根据iterator获取值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: