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迭代器所指的元素,返回下一个元素的 ...
随机推荐
- Java:Date、Calendar、Timestamp的使用
一.Java.util.Date 该对象包含了年月日时分秒信息.具体使用如下代码: //String 转换为Date private static void dateDemo() throws Par ...
- excel取值
1.获取excel表格中的数据的表达式“&(A-Z)” 2.excel表格取值时,如果遇到表达式中要包含引号的,两个引号表示一个引号,因为取值的时候已经用了一对引号了. ="||&q ...
- 初学者自学笔记-this的用法
请注意:这是自学者的笔记,只是个人理解,并非技术分享,如有错误请指正. "this"的意思,简单而言,就是"这个",也就是"当前".谁调用它 ...
- jquery自适应布局
代码整理 - uix.layout.js /** * Grace [jQuery.js] * * UIX页面布局 * 290353142@qq.com * exp: * $.uix.layout(); ...
- Python之练习Demo
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果,代码如下: #coding:GBK import os; def SortList ...
- iOS push全方位解析(二)【译文】"——生成OpenSSL证书,Provisioning Profile
这是一篇来自raywenderlich的教程,内容翔实!结构简单透彻.讲解循序渐进.文章质量上乘!是一篇难的的博文!使用半瓶的英语水平翻译了一下: 1.[iOS push全方位解析](一) push的 ...
- 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader
20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...
- C#编写自动关机程序复习的知识
首先一个程序第一要素是logo 在设置里面可以设置程序图标,在ICON里设置. ICON图标可以在网上下载. 这些都是表面功夫 程序中涉及到Buton.Label.Timer.Notiflcon控件 ...
- AlertDialog中EditText不能获取焦点以及不宽度不能自动铺满的完美解决方案
问题分析: 因为 dialog的Attributes使用的默认的,其中一个属性就是:flags ,就是这个属性导致不能获取焦点,默认的是FLAG_NOT_FOCUSABLE,故名思义不能获取输入焦点, ...
- 学习Swift -- 可选链
可空链式调用 可空链式调用是一种可以请求和调用属性.方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil).如果可空的目标有值,那么调用就会成功:如果选择的目标为空(nil),那么这 ...