map和unordered_map

unordered_map简介:

#include <cstdio>
#include <iostream>
#include <unordered_map>//两个头文件都行
//#include <tr1/unordered_map>
using namespace std;
int main(int argc, char const *argv[]){
unordered_map<int,int>mp;//创建 printf("%d\n", mp[]);//默认为0,注意:此时mp里已有一个元素的key是100,value是0 mp[]=;//简单赋值
mp[]=; mp.erase();//两种erase方法 printf("key: 12 -> value: %d\n", mp[]); mp[]=; unordered_map<int,int>::iterator it;//迭代器
it = mp.find();
if(it!=mp.end())printf("YES, it's %d\n", *it);
else printf("NO!\n"); mp.erase(it); printf("key:\n");
for(auto x: mp){//访问key
printf("%d\n", x);
} printf("value:\n");
for(auto x: mp){//访问value
printf("%d\n", x.second);
} return ;
}
/*
0
key: 12 -> value: 0
YES, it's 5
key:
12
100
value:
101
0
请按任意键继续. . .
*/

map简介

map是一类关联式容器,增加和删除节点对迭代器的影响很小。除了对操作节点有影响,对其他的节点没有什么影响。map主要建立了key到value的映射。key和value可以是任意类型。

注意:对于迭代器来说,可以修改实值,而不能修改key。

map基本操作:

C++ Maps是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数

map添加数据:

map<int,int>mp;

未插入数据时,值默认为0:

if(mp[100]==0)cout<<"hello!\n";

map<int ,string> mp; 

mp.insert(pair<int,string>(1,"hello"));

mp.insert(map<int,string>::value_type(w,"world"));
mp[3]="haha";

map元素的查找:

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
map<int ,string >::iterator it;
it=maplive.find(110);
if(it==maplive.end())cout<<"Do not find 110!\n";
else cout<<"Find 112!\n";

map的swap的用法
  map中的swap不是一个容器中的元素交换,而是两个容器交换;

map的sort问题:
  map中的元素是自动按key升序排序,所以不能对map用sort函数:

类似的还有set和unordered_map。对了,别忘了multiset和multimap这俩东西。

set的数据操作

::begin()  //迭代器

::end()      //迭代器

::clear()   //删除set容器中的所有的元素

::empty()    //判断set容器是否为空

::max_size()  //返回set容器可能包含的元素最大个数

::size()    //返回当前set容器中的元素个数

::rbegin   //逆迭代器

::rend()  //逆迭代器

最新文章

  1. 几款比较好用的C语言的集成开发环境及在windows下用命令行编译C代码
  2. c# tcp备忘及networkstream.length此流不支持查找解决
  3. UML元素分析
  4. 去除List集合中的重复对象,Map遍历代码
  5. YII数据库操作(CURD操作)
  6. Tornado异步
  7. 如何在Raspberry Pi 3B中安装RASPBIAN
  8. [bzoj4908][BeiJing2017]开车
  9. Android Studio安装Genymotion插件
  10. Ionic框架搭建简明教程
  11. MT【222】几道自招面试真题
  12. GYM 101173 K.Key Knocking(构造)
  13. word文档里打不开公式 打开后都是方框
  14. F#周报2018年第52期
  15. vue组件通信之任意级组件之间的通信
  16. nfs简述
  17. html 第一行不缩进,第二行缩进,文字对齐
  18. 腾讯蔡晨:十年沉淀,腾讯iOA为企业安全保驾护航
  19. SQL Server2008宝典 全书代码
  20. 用nw.js开发markdown编辑器-已完成功能介绍

热门文章

  1. HIVE基本原理和基础
  2. Ubuntu开放对外端口
  3. Vue学习笔记【10】——Vue指令之v-if和v-show
  4. Shiro学习(23)多项目集中权限管理
  5. BZOJ 3236: [Ahoi2013]作业(莫队+树状数组)
  6. Android_开发片段(Part 2)
  7. C#获取局域网ip
  8. tornado的安装
  9. python excel单元格及样式
  10. MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句