链接: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;
}