鏈接:https://www.cnblogs.com/jianfeifeng/p/11089799.html
對於map對象, count成員返回值只能是0或者1,map容器只允許一個鍵對應一個實例。所以count可有效地表明一個鍵是否存在。count返回出現的次數。
find返回指向元素的迭代器, 如果元素不存在, 則返回end 迭代器。
直接使用下標操作存在一個危險的副作用:如果該鍵不在map容器中,那么下標操作會插入一個具有該鍵的新元素。但是大多數情況下,使用者並不想插入一個容器本不存在的key。
c++中提供了兩種不修改map對象的查詢操作:
一、m.count(k) ==========> 返回m中k的出現次數
舉個例子:
int occurs = 0;
if(word_count.count("foobar")){
occurs = word_count["foobar"];
}
// 執行count后再使用下標操作符號, 實際上是對元素作了兩次查找。如果希望當元素存在時就使用它, 則應該用find操作。
二、m.find(k) ==========> 如果m容器中存在按k索引的元素, 則返回指向該元素的迭代器。如果不存在, 則返回超出末端迭代器。
舉個例子:
int occurs = 0;
map<string, int>::iterator it = word_count.find("foobar");
if(it != word_count.end()){
occurs = it->second;
}