multimap容器查找元素的三种方法总结
2015-09-29 03:09
176 查看
1、使用find和count操作。代码分析:
string search_item(“Alain de Botton”);
typedef multimap<
sz_type entries=author.count(search_item);
multimap<
for(sz_type cnt=0;cnt!=entries;++cnt,++iter){
cout<< iter->second << endl;
上面这段代码就是能够将键为”Alain de Botton”的所有元素给找出来了。自然前提条件有:(1)在multimap中同一个键所关联的元素是相邻存放的;(2)author.find(search_item)这段代码表达的意思是指向的是拥有这个键的第一个实例的迭代器。
2、与众不同的面向迭代器的查找方案。代码讲解:
typedef multimap<
authors_it beg=authors.lower_bound(search_item),
end=authors.upper_bound(search_item);
while(beg!=end){
cout<< beg->second<< endl;
++beg;}
上面这段代码比较简单起到了和第一种方法一样的效果。这种查找方式利用到了两个函数:(1)lower_bound(k);//返回一个迭代器,指向键不小于k的第一个元素;
(2)upper_bound(k);//返回一个迭代器,指向大于k的第一个元素;
上面beg指向该键中第一个与之匹配的元素,而end指向拥有键的最后一个元素的下一个位置。这两个操作不会说明键是否存在,其关键之处在于返回值给出了迭代器范围。
3、equal_range函数。代码讲解:
pair<
while(pos.first!=pos.second){
cout<< pos.first->second<< endl;
++pos.first;}
上面这段代码也是起到了前两个代码同样的效果,主要是用到了equal_range函数:equal_range(k) //返回一个迭代器的pair对象,它的first成员等价于lower_bound(k),而second成员则等价于upper_bound(k).
注意:item->mem //对item进行解引用,获取指定元素中名为mem的成员,等效于(*item).mem
string search_item(“Alain de Botton”);
typedef multimap<
string,string> :: size_type sz_type;
sz_type entries=author.count(search_item);
multimap<
string,string> :: iterator iter=author.find(search_item);
for(sz_type cnt=0;cnt!=entries;++cnt,++iter){
cout<< iter->second << endl;
上面这段代码就是能够将键为”Alain de Botton”的所有元素给找出来了。自然前提条件有:(1)在multimap中同一个键所关联的元素是相邻存放的;(2)author.find(search_item)这段代码表达的意思是指向的是拥有这个键的第一个实例的迭代器。
2、与众不同的面向迭代器的查找方案。代码讲解:
typedef multimap<
string,string> :: iterator anthors_it;
authors_it beg=authors.lower_bound(search_item),
end=authors.upper_bound(search_item);
while(beg!=end){
cout<< beg->second<< endl;
++beg;}
上面这段代码比较简单起到了和第一种方法一样的效果。这种查找方式利用到了两个函数:(1)lower_bound(k);//返回一个迭代器,指向键不小于k的第一个元素;
(2)upper_bound(k);//返回一个迭代器,指向大于k的第一个元素;
上面beg指向该键中第一个与之匹配的元素,而end指向拥有键的最后一个元素的下一个位置。这两个操作不会说明键是否存在,其关键之处在于返回值给出了迭代器范围。
3、equal_range函数。代码讲解:
pair<
authors_it,authors_it> pos=authors.equal_range(search_item);
while(pos.first!=pos.second){
cout<< pos.first->second<< endl;
++pos.first;}
上面这段代码也是起到了前两个代码同样的效果,主要是用到了equal_range函数:equal_range(k) //返回一个迭代器的pair对象,它的first成员等价于lower_bound(k),而second成员则等价于upper_bound(k).
注意:item->mem //对item进行解引用,获取指定元素中名为mem的成员,等效于(*item).mem
相关文章推荐
- 我想搞懂软工问题
- 合作共赢的范例:百度“借船出海”,微软“借机落地”
- eclipse常用快捷键
- iOS获取键盘的高度
- 终端查看静态库的详细信息,以及合并不同版本的静态库
- 经济--基金问答
- Maximal Square
- 经济--如何买基金?
- 顺序容器和关联容器添加新元素方法详解
- iOS 对象信息保存、转化JSON、JSON生成对象的模型方案记录
- Java中的栈:java.util.Stack类
- virtualenv简单使用
- win2008阿里一键环境包mysql老是1067报错
- Unity3D图片质量设置
- 插入排序(折半插入)
- 用python做了一个 qq炫舞 机器人
- libgdx API之AI:AI让游戏对象思考
- Unity优化技巧提到的3篇翻墙文章之Unity 4.3 關於 Occlusion Culling : 錯誤診斷
- 京城码帮——不做单纯的程序员,第二次聚会总结
- 选择排序(直接选择)