首先,不推荐使用[]来判断key是否存在,因为使用操作符[]会向map容器里插入一个元素。
map的operator[]重载大致是这样一个内容:
data_type& operator[]( const key_type& k )
{
value_type v(k, data_type());
iterator it = insert(v).first;
return it-> second;
}
大致是这样,如果没有找到的话就插入一个,然后返回它的second。
正确的判断方法是使用map的find函数,由于map是一个红黑树,find的时间复杂度是logn,可以接受。
bool i***ist(const String& keyName)
{
return ( mRegistryMap.find(keyName) != mRegistryMap.end() );
}
阅读(34208) | 评论(5) | 转发(3) |