STL之map、multimap
map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。
map中key值是唯一的。集合中的元素按一定的顺序排列。元素的插入过程是按照排序规则插入,所以不能指定插入位置。
map的具体实现采用红黑树的变体平衡二叉树的数据结构。在插入删除操作上快于vector。
map可以直接存取key对应的value,支持[]操作符,如map[key] = value;
multimap与map的区别:map支持唯一键值,每个键值只能出现一次,而multimap中相同键可以出现多次multimap不支持[]操作符.
map中插入元素有三种方式:
map<int,string> mapA;
mapA.insert(pair<int,string>(,"小王"));
mapA.insert(map<int,string>::value_type(,"小李"));
mapA[] = "小刘";
.insert()方法返回值是pair<iterator,bool>
pair<map<int,string>::iterator,bool> pairResult = mapA.insert(pair<int,string>(4,"小猪"));
map<int,string,less<int>> mapA;//这样就是关键字升序
map<int,string,greater<int>> mapA;
mapA.insert(pair<int,string>(,"小王"));
mapA.insert(map<int,string,greater<int>>::value_type(,"小李"));
mapA[] = "小刘";mapA.insert(make_pair(6,"小彭"));
pair<map<int,string,greater<int>>::iterator,bool> pairResult = \
mapA.insert(pair<int,string>(,"小猪"));
for (map<int,string,greater<int>>::iterator it = mapA.begin();it != mapA.end();it++)
{
cout<<it->second<<" ";
}
cout<<endl;
以上是升序
虽然说查找似乎有两种方法但是我只是成功了一种另一种总是有bug所以我还是只贴出来一个算了:
//声明和定义
struct userdevice
{
string m_devicename;
long m_deviceid;
int m_devicePopedom;
}; typedef multimap<string,userdevice> USERTABLE;
typedef USERTABLE::const_iterator CIT;
typedef pair<CIT,CIT> Rang; //主函数
CIT itmset; userdevice d1,d2,d3,d4;
d1.m_deviceid = ;
d1.m_devicename = "d1";
d1.m_devicePopedom = ; d2.m_deviceid = ;
d2.m_devicename = "d2";
d2.m_devicePopedom = ; d3.m_deviceid = ;
d3.m_devicename = "d3";
d3.m_devicePopedom = ; d4.m_deviceid = ;
d4.m_devicename = "d4";
d4.m_devicePopedom = ; USERTABLE m_user;
m_user.insert(make_pair("liuzhimin",d1));
m_user.insert(multimap<string,userdevice>::value_type("peng",d2));
m_user.insert(make_pair("liuzhimin2",d3));
m_user.insert(make_pair("liuzhimin2",d4)); Rang range = m_user.equal_range("peng");
for (CIT i = range.first;i != range.second;i++)
{
cout<<i->second.m_deviceid<<','\
<<i->second.m_devicename.c_str()<<','\
<<i->second.m_devicePopedom<<endl;
}
STL之map、multimap的更多相关文章
- STL:map/multimap用法详解
map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...
- STL之map&multimap使用简介
map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...
- 【STL】-Map/Multimap的用法
初始化: map<string,double> salaries; 算法: 1. 赋值.salaries[ "Pat" ] = 75000.00; 2. 无效的索引将自 ...
- 【C++ STL】Map和Multimap
1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...
- STL中的map/multimap小结
(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...
- iBinary C++STL模板库关联容器之map/multimap
目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以 ...
- STL之Map和multimap容器
1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. 2)map中key值是唯一的.集合中的元素按一 ...
- STL中 map 和 multimap
1. 所在头文件<map>. 命名空间std, 声明如下: namespace std{ template <class Key,class T, class Compare = l ...
- STL之六:map/multimap用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap 使用map/multimap之前要加入头文件# ...
- STL——容器(Map & multimap)的删除
Map & multimap 的删除 map.clear(); //删除所有元素 map.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的 ...
随机推荐
- 数据库msqlserver的几种类型及解决MSSQLServer服务启动不了的问题
从08年开始学习了sqlserver数据库之后,就一直以为sqlserver只有版本的区分,没有类型的差异:总以为从Sql2000. sql2005到sql2008.sql2012,微软出口的数据库, ...
- fmt:formatDate标签的输出格式
http://blog.csdn.net/lidawei201/article/details/7197834
- Codevs 2549 自然数和分解
2549 自然数和分解 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 传送门 题目描述 Description 把自然数N分解为若干个自然数之和,输出方案数. 输 ...
- oracle创建第三方数据接口表,指定特定用户访问某张表
/*****创建用户并指定操作哪张表开始******/ --1.创建用户并设置默认表空间 CREATE USER CHENGDWY IDENTIFIED BY CHENGDWY DEFAULT TAB ...
- CentOS如何查看端口是被哪个应用/进程占用
有时启动应用时会发现端口已经被占用,或者是感觉有些端口自己没有使用却发现是打开的.这时我们希望知道是哪个应用/进程在使用该端口. CentOS下可以用netstat或者lsof查看,Windows下也 ...
- php引用(&)详解及注意事项
php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存 ...
- Ubuntu系统、开发环境配置
在VMware10下安装成功了Ubuntu 13.10桌面版,刚安装完需要配置很多内容,下面为记录: 1. 更新源: 想了解更新地址的可以查看apt-get的源列表文件 $ sudo gedit /e ...
- Dalvik虚拟机进程和线程的创建过程分析
从前面Dalvik虚拟机的运行过程分析一文可以知道,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C/C++函数. 这些C/C++函数在执行的过程中,又可以通过本地 ...
- 小爬虫。爬取网站多页的通知标题并存取在txt文档里。
爬取网页中通知标题的内容展示: this is 1 page!<精算学综合>科目考试参考大纲2016年上半年研究生开题报告评议审核结果公示[答辩]2016下半年研究生论文答辩及学位评定 ...
- iOS: 神奇的addSubView
看着addSubView, 本以为是添加多个对象, 但通过测试代码, 发现同一个对象在addSubView中只会添加一次. 想想, 视图对象是通过引用得到的. 在视图的子视图集中, 只保存一个相应的对 ...