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;
}

最新文章

  1. 弹出popwindow 背景变暗
  2. Log4J日志配置详解
  3. ZK listbox 两种分页使用及比较
  4. Elasticsearch嵌套聚合
  5. Jmeter 分布式性能测试
  6. python3环境搭建(CentOS7.2)
  7. Linux 下开放指定端口
  8. Codeforces Round #329 (Div. 2) D. Happy Tree Party 树链剖分
  9. 27、Service
  10. 在Android项目中启用Java 8的部分特性--Lambda &amp; Method References
  11. iOS 9之Advanced Touch Input(高级触摸输入)
  12. fragment Trying to instantiate a class com.example.testhuanxindemo.MyFragment that is not a Fragmen
  13. AIR学习教程(一)
  14. Java阅读word程序说明文件
  15. ES6(es2015)新增实用方法汇总
  16. ADT打开layout目录的xml报错java.lang.NullPointerException
  17. switch留个爪,之后还需要再研究下
  18. Html页面雪花效果的实现
  19. 一个在linxu自动切换ip的脚本
  20. JavaWeb开发之网站实现文件上传功能

热门文章

  1. Maven3(笔记一)
  2. 数据库(学习整理)----7--Oracle多表查询,三种join连接
  3. log4j文件
  4. 使用enable_shared_from_this示例
  5. 开发错误日志之No matching bean of type [xxx] found for dependency
  6. css 兼容 position:fixed
  7. memcached 入门
  8. pushState与replaceState区别
  9. Day16 DOM &amp;jQuery
  10. pyqt5 窗体布局