首先,不推薦使用[]來判斷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() );
}