map的常见用法
map的常见用法
map 是什么?
map是一组键值对的组合,通俗理解类似一种特殊的数组,a[key]=val,只不过数组元素的下标是任意一种类型,而且数组的元素的值也是任意一种类型。有点类似python中的字典。通过"键"来取值,类似生活中的字典,已知索引,来查看对应的信息。(个人理解,其实不准确,内部并不是数组实现的,而是红黑树)
map的定义
map<typename1,typename2> mp;
如果是字符串到其他类型的映射应该使用string
map(string,int) mp;
map的值也可以是stl容器
map(set<int>,string) mp;
map容器内部的访问方式
通过下标来访问
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['c']=10;
mp['c']=20;//10被覆盖
cout<<mp['c']<<endl;
return 0;
}
通过迭代器来访问
map的迭代器和其他集合的迭代器不同,其具有两种类型分别是typename1,typename2。
通过迭代器it要分别访问集合元素的键和值。
it->first访问键,it->second访问值
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['a']=10;
mp['b']=20;
mp['c']=30;
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}
map会以键从小到大自动排序,就是通过'a','b','c'的顺序来排这三个键值对,这是由于集合内部是通过红黑树来实现的,在建立映射的时候会自动实现从小到大的排序。
map中常见函数
find()
find(key)返回键为key的映射的迭代器,时间复杂度为O(logN),N为map重映射的数量。
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['a']=10;
mp['b']=20;
mp['c']=30;
map<char,int>::iterator it=mp.find('a');
cout<<it->first<<' '<<it->second<<endl;
return 0;
}
erase()
删除单个元素
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['a']=10;
mp['b']=20;
mp['c']=30;
map<char,int>::iterator it=mp.find('a');
mp.erase(it);//删除a 10
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}
删除多个元素
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['a']=10;
mp['b']=20;
mp['c']=30;
map<char,int>::iterator it=mp.find('a');
mp.erase(it,mp.end());//删除it之后的所有映射
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}
size()
获取map中映射的对数
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['a']=10;
mp['b']=20;
mp['c']=30;
cout<<mp.size()<<endl;
return 0;
}
清空map中的所有元素
# include <iostream>
# include <map>
using namespace std;
int main(void)
{
map<char,int> mp;
mp['a']=10;
mp['b']=20;
mp['c']=30;
mp.clear();//清空map
cout<<mp.size()<<endl;//0
return 0;
}
总结
用途
- 建立字符串和整数之间的映射
- 判断数据是否存在
- 字符串和字符串的映射
map的常见用法的更多相关文章
- python map 常见用法
python map 常见用法2017年02月01日 19:32:41 淇怪君 阅读数:548版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Tifficial/art ...
- STL map 常见用法详解
<算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- STL pair 常见用法详解
<算法笔记>学习笔记 pair 常见用法详解 //pair是一个很实用的"小玩意",当想要将两个元素绑在一起作为一个合成元素, //又不想因此定义结构体时,使用pair ...
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- php中的curl使用入门教程和常见用法实例
摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...
- find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
随机推荐
- JavaScript 的定时(Timing )事件——setTimeout()与setInterval()
JavaScript 可以在时间间隔内执行,这就是所谓的定时事件( Timing Events). ㈠Timing 事件 ⑴window 对象允许以指定的时间间隔执行代码,这些时间间隔称为定时事件. ...
- 【BZOJ3944】 Sum
Description Input 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 Output 一共T行,每行两个用空格分隔的数ans1,ans ...
- PTA 刷题与Z老师的头发
刷题与Z老师的头发 (10 分) 在Pintia上,每天Z老师出题.小盆友们刷题.Z老师的头发遵从以下规律: 1.每天生长出60根头发: 2.每出一道题,减少20根头发: 3.每天结束时统计累积做题情 ...
- 二级索引-phoenix-单机部署
下载 从下载地址下下载以下对应hbase版本的版本: phoenix-4.7.0-HBase-1.0/bin/phoenix-4.7.0-HBase-1.0-bin.tar.gz 安装部署 解压 ta ...
- 套接字之sendmsg系统调用
sendmsg系统调用允许在用户空间构造消息头和控制信息,用此函数可以发送多个数据缓冲区的数据,并支持控制信息:当调用进入内核后,会将用户端的user_msghdr对应拷贝到内核的msghdr中,然后 ...
- 展示组件(Presentational component)和容器组件(Container component)之间有何不同
展示组件关心组件看起来是什么.展示专门通过 props 接受数据和回调,并且几乎不会有自身的状态,但当展示组件拥有自身的状态时,通常也只关心 UI 状态而不是数据的状态.(子组件)容器组件则更关心组件 ...
- vim 配置 scala 语法高亮
第一步:执行下面这个命令: mkdir -p ~/.vim/{ftdetect,indent,syntax}for d in ftdetect indent syntax ; do curl -o ~ ...
- SAP MaxDB日常运维—启动、关闭、磁盘扩容
SAP MaxDB日常维护1.检查MaxDB状态,并启动su - pe0csccd /sapdb/SDB/db/bin./dbmcli -d SDB -u superdba,Mypassword db ...
- EC
- 【MAC】安装chrome浏览器
step1:下载dmg安装包 chrome下载地址 点击[下载Chrome] step2:安装chrome 下载好googlechrome.dmg文件后,像其它程序一样安装就可以了 打开访达--> ...