`
tulunta
  • 浏览: 360285 次
文章分类
社区版块
存档分类
最新评论

multimap equal_range函数的使用方法

 
阅读更多

#include <iostream>
#include <string>
#include <map>
using namespace std;

struct userdevice{
string m_devicename;
string m_deviceid;
int m_devicePopedom;

};
typedef multimap<string,userdevice> USERTABLE;
typedef USERTABLE::const_iterator CIT;
typedef pair<CIT, CIT> Range;
int _tmain(int argc, _TCHAR* argv[])
{
CIT it;
userdevice d1,d2,d3,d4;
d1.m_deviceid = "12341234";
d1.m_devicename = "d1";
d1.m_devicePopedom = 123;

d2.m_deviceid = "23622344";
d2.m_devicename = "d2";
d2.m_devicePopedom = 234;


d3.m_deviceid = "3451234";
d3.m_devicename = "d3";
d3.m_devicePopedom = 345;

d4.m_deviceid = "43622344";
d4.m_devicename = "d4";
d4.m_devicePopedom = 456;

USERTABLE m_user;
m_user.insert(make_pair("zhangsanfeng",d1));
m_user.insert(make_pair("zhangsanfeng",d2));

m_user.insert(make_pair("zhangsanfeng2",d3));
m_user.insert(make_pair("zhangsanfeng2",d4));
//查找方法一
Range range=m_user.equal_range("zhangsanfeng");
for(CIT i = range.first;i!=range.second;i++)
{
cout << i->second.m_deviceid<<','
<< i->second.m_devicename<<','
<<i->second.m_devicePopedom
<< endl;
}
cout<<endl;
//查找方法二
CIT it2 = m_user.find("zhangsanfeng2");
while(it2 != m_user.end())
{
cout<<it2->second.m_deviceid<<','
<<it2->second.m_devicename<<','
<<it2->second.m_devicePopedom<<','
<<endl;
it2++;
}
cout<<endl;
//遍历
CIT it3 = m_user.begin();
while(it3 != m_user.end())
{
cout<<it3->second.m_deviceid<<','
<<it3->second.m_devicename<<','
<<it3->second.m_devicePopedom<<','
<<endl;
it3++;
}
cin.get();
return 0;
}

lower_bound() 和 upper_bound():lower_bound(k) 查找第一个与键 k 关联的值,而 upper_bound(k) 是查找第一个键值比 k 大的元素。下面的例子示范用 upper_bound()来定位第一个其键值大于“213.108.96.7”的元素。通常,当键是一个字符串时,会有一个词典编纂比较:

dns.insert(make_pair("219.108.96.70", "pythonzone.com"));
CIT cit=dns.upper_bound("213.108.96.7");
if (cit!=dns.end()) //found anything?
cout<<cit->second<<endl; //display: pythonzone.com

如果你想显示其后所有的值,可以用下面这样的循环:

// 插入有相同键的多个值
dns.insert(make_pair("219.108.96.70","pythonzone.com"));
dns.insert(make_pair("219.108.96.70","python-zone.com"));

// 获得第一个值的迭代指针
CIT cit=dns.upper_bound("213.108.96.7");

// 输出: pythonzone.com,python-zone.com
while(cit!=dns.end())
{
   cout<<cit->second<<endl;
   ++cit;
}
分享到:
评论

相关推荐

    MXTWebMultipleMaps_carefulkrl_multimap_SharpMapC#_zip_webmap_

    Web Multiple Maps for Csharp

    传智播客扫地僧视频讲义源码

    08_C动态库升级成框架案例_方法1动态库中直接添加回调函数_传智扫地僧 09_C动态库升级成框架案例_方法2把回调函数缓存到动态库_编写 10_C动态库升级成框架案例_方法2把回调函数混存到动态库_测试 11_C++基础课程day...

    STL容器multimap的使用

    stl容器multimap的使用 包含6.0代码 以及详细的文档说明

    好友列表(multimap实现)

    多映射示例:multimap 实现的简单好友列表。

    MultiMAP:用于单细胞多组学集成的MultiMAP

    多图MultiMAP是一种集成单细胞多组学的方法。 MultiMAP也可以用于批量校正。 更多详细信息可在我们的。安装我们正在努力让包装上pip尽快。 同时享受此占位符解决方案! git clone ...

    C++ STL入门教程(7) multimap、multiset的使用

    一、multimap(一对多索引) C++ multimap和map所支持的操作相同(除了multimap不支持下标运算),但是multimap允许重复的元素。 完整程序代码: /*请务必运行以下程序后对照阅读*/ ///头文件依旧是map #include #...

    STL源码剖析.pdg

    equal_to, not_equal_to, greater, greater_equal, less, less_equal 7.5 逻辑运算类(logical)仿函数 422 logical_and, logical_or, logical_not 7.6 证同(identity)、选择(select)、投射(project) 423 ...

    利用快速排序及multimap统计文件频率靠前的单词

    本程序用c++标准库中的快速排序算法以及容器map和multimap实现了对文件中出现频率靠前的单词进行了统计,至于文件大小取决于你机器所剩的内存数,如果文件数据时海量的(上亿)则本程序可能不适合,需要按照海量数据...

    C++ STL(vector+multimap容器)案例

    通过multimap进行信息的插入 key(部门编号) value(员工) 分部门显示员工信息 实现步骤: 创建10名员工,放到vector中 遍历vector容器,取出每个员工,进行随机分组 分组后,将员工部门编号作为key,具体员工作为...

    STL 源码剖析(侯捷先生译著)

    equal_to, not_equal_to, greater, greater_equal, less, less_equal 7.5 逻辑运算类(Logical)仿函数 422 logical_and, logical_or, logical_not 7.6 证同(identity)、选择(select)、投射(project) 423 ...

    cpp-learn.tar.gz

    multimap_learn.cpp multiset_learn.cpp my_vector.cpp priority_queue_learn.cpp queue_learn.cpp set_learn.cpp stack_learn.cpp static_var_in_class.cpp std_except.cpp std_io.cpp stl_alg_learn.cpp string_...

    go-web:后端开发指南(笔记)

    unordered_multimap algorithm 其它 实现自定义排序规则 Python 攻略 基本数据类型 生成器 文件操作 并发 三方库 jieba wordcloud Python 连接数据库 Web 开发 爬虫 Web 框架 Django 爬虫框架 Scrapy

    C++ STL 开发技术导引(第6章)

    23.16 等价区间equal_range 390 23.17 折半搜索binary_search 392 23.18 子集合includes 393 23.19 集合求并set_union 394 23.20 集合求交set_ intersection 396 23.21 集合求差set_difference 398 ...

    C++ STL开发技术导引(第5章)

    23.16 等价区间equal_range 390 23.17 折半搜索binary_search 392 23.18 子集合includes 393 23.19 集合求并set_union 394 23.20 集合求交set_ intersection 396 23.21 集合求差set_difference 398 ...

    C++ STL开发技术导引(第3章)

    23.16 等价区间equal_range 390 23.17 折半搜索binary_search 392 23.18 子集合includes 393 23.19 集合求并set_union 394 23.20 集合求交set_ intersection 396 23.21 集合求差set_difference 398 ...

    multimap.yml

    multimap.yml

    go-multimap:Go-Multimap是Go中`multimap`数据结构的实现

    多图这是语言缺少的multimap集合(这也是创建适当的库/包的一种简单做法)。 多重映射(有时也称为多重哈希或多重字典)是映射或关联数组抽象数据类型的概括,其中多个以上值可以与给定键相关联并返回给定键。 此...

    cpp代码-Multimap 案例

    cpp代码-Multimap 案例

    cpp-btree:针对读取和写入大型 blob 的系统进行了优化

    与 STL map、set、multimap 和 multiset 模板类似,这个库提供了 btree_map、btree_set、btree_multimap 和 btree_multiset。 与通常使用红黑树实现的标准容器相比,C++ B 树容器具有一些优势。 红黑树中的节点每个...

    数据库求属性集闭包&函数依赖闭包

    1) 将函数依赖用multimap,string&gt; 存储,因为函数依赖可能会有一对多,例如:A-&gt;X,A-&gt;Y;多重映射可以存储,一一映射只能能存储一对一。 2) 熟悉全排列组合的算法,即列出Cnk的所有可能结果(从Cn­­­1,Cn2,….,...

Global site tag (gtag.js) - Google Analytics