设为首页 加入收藏

TOP

C++标准库map类型(二)
2013-01-01 14:51:14 来源: 作者: 【 】 浏览:647
Tags:标准 map 类型

 

  3.给map添加元素

  与其他下标操作符一样,map的下标也是使用索引获取该键关联的值。如果该键在容器中,则map的下标运算与vector的下标元素一样:返回该键所关联的值。只有在所查的键不存在是,map容器才为该键创建一个新的元素,并将它插入到此map对象中。此时,所关联的值采用值初始化:类类型的元素用默认的构造函数初始化,而内置类型的元素则初始化为0.

  map容器提供的insert操作

  m.insert(e)               e是在m上的value_type类型的值。如果键(e.first)不在m中,则插入一个e.second的新元素;如果该键在m中已经存在,则保持m不变。该函数返回一个pair类型对象,包含指向键为e.first的元素的map迭代器,以及一个bool类型的对象,表示是否插入了该元素

  m.insert(beg,end)     迭代器之间的元素必须为value_type类型的键-值对。在该范围内的元素,如果不在m中,则插入。

  m.insert(iter,e)          从迭代器iter开始寻找,不存在m中则插入,返回迭代器,指向m中具有指定键的元素

  word_count.insert(map<string,int>::value_type("Anna",1));

  也可以简化为 word_count(make_pair("Anna",1));

  使用第一种方法插入返回的是pair类型。

  pair<map<string,int>::iterator,bool> ret=word_count.insert(map<string,int>::value_type("Anna",1));

  4.查找并获取map中的元素

  使用下标获取map中国的值,如果该键不存在,则插入了显得元素。下面map提供了两个操作

  m.count(k)       返回m中k出现的次数

  m.find(k)          存在则返回指向该元素的迭代器,否则返回超出末端迭代器

  对于map,count的返回值只可能是0或者1,通过该函数就可以知道是否存在,然后使用下标操作,则不会出现不存在则插入新元素的问题。

  对于find函数,通过判断是否与超过末端的迭代器相等判断是否存在,若存在则使用返回的迭代器,该返回的迭代器是pair类型,通过下面的方法获得值int value=iter->second;

  5.从map中删除元素

  m.erase(k)        删除m中键为k的元素。返回size_type类型的值,表示删除元素的个数

  m.erase(p)        从m中删除迭代器p所指向的元素。p必须指向m中确实存在的元素,而且不能等于m.end()。返回void类型

  m.erase(b,e)     从m中删除一段范围内的元素,该范围由迭代器对b和e标记。b和e必须标记m中一段有效范围:即b和e都必须指向m中的元素或者最后一个元素的下一个位置。而且b和e要么相等(此时删除的范围为空),要么b指向的元素必须出现在e所指向的元素之前。返回void类型。

  除此之外,map还提供一种特殊的erase操作,其参数是key_type类型的值,如果拥有该元素的键存在,则删除该元素,返回删除的个数。对于map来说,返回值为1或者0.0表示表示删除的元素在map中不存在。

  对于map对象的遍历,可以使用迭代器,m.end()和m.begin()。

      

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇The Hamming Distance&.. 下一篇c/c++项目如何管理头文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: