std::map find 陷阱

来源:互联网 发布:人民大学 数据库系统 编辑:程序博客网 时间:2024/04/29 07:13

正确做法

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获取值。

0 0
原创粉丝点击