C++ 10.3.6 查找并读取map中的元素

简介

  • 对于map对象,count成员的返回值只能是0或1 . map 容器只允许一个键对应一个实例,所以 count 可有效地表明一个键是否存在。 count 返回出现的次数

    • find 操作返回指向元素的迭代器,如果元素不存在,则返回end 迭代器。

============================================================================================

map<string,int> word_count;
int occurs = word_count["foobar"];
  • 下标操作存在一个危险的副作用:如果该键不在map容器中,那么下标操作会插入一个具有该键的新元素。

  • 大多数情况下,我们只想知道该元素是否存在,并不想做插入运算。

  • map 容器提供了两个操作:count 和find ,用于检查某个键是否存在而不会插入该键。

一、查找并读取map中的元素

1、使用count 检查map 对象中某键是否存在

  • 对于map对象,count成员的返回值只能是0或1 . map 容器只允许一个键对应一个实例,所以 count 可有效地表明一个键是否存在。 count 返回出现的次数

  • 对于multiple 容器,count返回值将有更多的用途 10.5节

  • 如果返回值非0 ,则可以使用下标操作符来获取该键所关联的值,而不必担心这样做会在map中插入新元素

int occurs =0 ;
if(word_count.count("foobar"))
    occurs = word_count["foobar"];
//执行count后再使用下标操作符,实际上是对元素作了两次查找。如果希望当元素存在时就使用它,则应该用find 操作

2、读取元素而不插入该元素 —-find 函数

1
- find 操作返回指向元素的迭代器,如果元素不存在,则返回end 迭代器。

  • 如果希望当具有指定键的元素存在时,就获取该元素的引用,否则就不在容器中创建新的元素,那么应该使用find
int occurs=0;
map<string,int>::iterator it=word_count.find("foobar");
if(it!=word_count.end())
   occurs = it->second;

你可能感兴趣的:(查找map中元素)