map的常用用法详解(新手入门!!!)_阳树阳树的博客-程序员宝宝_map用法

技术标签: c++  笔记  

目录

前言:

1.map的定义:

2.map容器内元素的访问:

3.map常用函数实例解析:

4.map的常见用途:


前言:

map是一种映射,是常用的STL容器。(map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器))

如需使用,需要加一个map头文件。

1.map的定义:

map<typename1, typename2>mp;

使用map要确定映射前类型(键key)和映射后的类型(值value)。

注意:如果是字符串到整形的映射,必须使用string而不是char数组。

例子:

(1)map<set<int>,string>mp;

2.map容器内元素的访问:

(1)通过下标访问:

比如:

map<char,int>mp;

mp['c']=20;

mp['c']=30;

printf("%d",m['c'])输出的是30;

(2)通过迭代器访问:

定义方式:

map<typename1, typename2>::iterator it;

map迭代器的使用方式和其他STL容器的迭代器不同,因为map的每一对映射都有两个typename,这决定了必须能通过一个it来同时访问键和值。事实上,map可以使用it->first来访问键,使用it->second来访问值。

3.map常用函数实例解析:

(1)find()

find(key)返回键为key的映射的迭代器,时间复杂度为N(logN),N为map中映射的个数。

(2)erase()

erase有两种用法:

第一种:删除单个元素,删除一个区间内的所有元素。

删除单个元素的方法==》mp.erase(it),it为删除的元素的迭代器,时间复杂度为O(1)。

mp.erase(key),key为欲删除的键。时间复杂度为O(logN),N为map内元素的个数。

第二种:删除一个区间内的所有元素。

mp.erase(firse,last)删除[first,last).

时间复杂度O(last-first)

(3)size()

size()用来获得map中映射的对数,时间复杂度为O(1)。

(4)clear()

clear()用来清空map中的所有元素,复杂度为O(N),其中N为map中的元素的个数。

4.map的常见用途:

1.需要建立字符(或字符串)与整数之间映射的题目,使用map可以减少代码量。

2.判断大整数或者其他类型数据是否存在的题目,可以把map当bool数组用。

3.字符串和字符串的映射有时候也会遇到!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_60789461/article/details/120709023

智能推荐

什么时候使用抽象类,什么情况下使用接口,你真的懂了吗?_讲讲Java那些事儿的博客-程序员宝宝_什么时候用抽象类

抽象类抽象类的书写格式 public abstract class……抽象类中的抽象方法 public abstract void test();抽象方法必须存在于抽象类中,抽象类中可以有非抽象方法抽象类中的抽象方法,不能使用private修饰,可以使用protected修饰,但是尽量使用public抽象类不能直接实例化,也就是不能直接new对象,通过new子类对象的方式来创建对...

铁乐学python28_模块学习3_铁乐与猫的博客-程序员宝宝

大部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/OS模块复习一二&amp;gt;&amp;gt;&amp;gt; import os&amp;gt;&amp;gt;&amp;gt; os.getcwd() # 获取当前所在目录'D:\\PortableSoft\\Python35'&amp;gt;&amp;gt;&amp;gt; os.chdir('d:\\PortableSoft') # 改变工作...

OpenBLAS线性代数子程序开源库的编译_papaofdoudou的博客-程序员宝宝_github openblas

OpenBLAS是一套开源的线性代数算法子程序库的实现版本,包含了矩阵的运算处理函数。很多甚多学习框架例如Tengine支持以它为基础的算子实现,下述在ubuntu14.04平台上的编译过程:1.获取源码 git clone [email protected]:xianyi/OpenBLAS.git2.进入顶层目录,直接敲入make编译,默认编译host机代码,编译结束后: 3.安装,敲入命令 make install PREFIX=/path/to/install 例如...

intellij idea 运行时报错the output path is not specified for module_fabbymee的博客-程序员宝宝_idea output path

intellij idea 运行时报错:the output path is not specified for module Specify the output path in the Project Structure dialog其实就是没有配置编译路径,ctrl+alrt+shift+s打开配置界面3.设置项目编译目录3.1添加目录我们在刚才创建的项目中添加几个目录...

推荐几个清华和北邮学霸的公众号_Java团长在csdn的博客-程序员宝宝

今天给大家精心推荐几个Java原创公众号,覆盖了几乎所有Java开发的领域,各个公号擅长的领域不一样,有擅长JVM的、Java并发的、消息中间件的、分布式架构的、微服务的...

Cannot clone or checkout repository:解决办法_Loobeeke的博客-程序员宝宝

SpringCloudConfig——Cannot clone or checkout repository:解决办法1.首先检查自己的git仓库权限是否公开,如果是私有的肯定克隆不下来2 . 如果确认自己的仓库权限没有问题就看下自己的配置文件url有没有加.git后缀3.如果上述都没有问题那就在配置文件上加上你Github或者Gitee的用户名和密码,问题基本都能解决配置文件如下:#服务端口server.port=your port#github仓库地址spring.cloud.co

随便推点

首款开源软硬一体OpenCV AI Kit(OAK)用户问题官方答疑实录 Q&A_CSDN官方博客的博客-程序员宝宝

作为计算机视觉领域的老牌军,OpenCV 涵盖图像处理和计算机视觉方面的很多通用算法,是非常有力的研究工具之一,且稳居开发者最喜爱的 AI 工具/框架榜首。为了让大家有机会得以上手实践,CSDN 于上周六特邀OpenCV CEO Satya Mallick、OpenCV中国团队核心成员吴佳以及OpenCV AI Kit 开发工程师 Steven Li 做客CSDN 直播间,为大家分享OpenCV的最新技术进度、 OpenCV AI Kit (OAK)主要功能及应用场景,点此可观看直播回放。接下来我们来看

springboot在idea的RunDashboard如何显示出来_ywb201314的博客-程序员宝宝

运用spring cloud框架基于spring boot构建微服务,一般需要启动多个应用程序,在idea开发工具中,多个同时启动的应用需要在RunDashboard运行仪表盘中可以更好的管理,但有时候idea中的RunDashboard窗口没有显示出来,也找不到直接的开启按钮,下面就来介绍两种开启方法工具/原料 spring boot idea 方法/步骤 点击如图所示位置的下来三角按钮,然后选择Edit Configurations,或者点击菜单栏Run》Edit Conf

QSplitter的简单使用_Scarlett_OHara的博客-程序员宝宝

这里记录一下QSplitter分割窗口的伪代码: m_pSplitter = new QSplitter(Qt::Vertical, this); QSplitter *pLeftSpliter = new QSplitter(Qt::Vertical, m_pSplitter); A* m_a = new A(pLeftSpliter); B* m_b = ne...

基于java的在线考试系统设计(含源文件)_设计源码分享的博客-程序员宝宝_java在线考试系统设计

欢迎添加微信互相交流学习哦!项目源码:https://gitee.com/oklongmm/biye题 目 基于java的在线考试系统设计 摘 要 本系统是一个基于java的在线考试系统。它的用户由学生、教师和系统管理员组成。学生登陆系统可以进行在线测试和成绩查询。当学生登陆时,系统会随机地为学生选取试题组成考卷。当学生提交考卷后,系统会自动批改客观题,并将试卷提供给教师查看和提醒教师对试卷主观题进行修改。待教师修改完试卷后,系统会自动生成考...

大数据开发和java开发有什么不同?_小迪和夫人的博客-程序员宝宝

最近发现有些同学并不太了解大数据开发工程师这个职位,所以想简单介绍一下什么是大数据开发工程师,当前互联网公司的数据开发到底是什么样子的?和一般的Java或者PHP工程师在工作上有什么区别?什么不是大数据开发?仅使用数据库(关系型mysql,sqlserver,oracle等 非关系型 mongo redis等),尽管数据量达到千万级别,亿级别不是大数据开发。从业务系统的数据库中查询数据...

android Scroll学习_梦想家FFF的博客-程序员宝宝

系统提供了getLocationOnScreen(intlocal[])方法获取Android坐标系中点的位置 在触控事件 中使用getRowX(),getRowY()方法获得的坐标同样是中点坐标视图坐标系描述子视图在父视图中的位置关系在触控事件中通过getX(),getY()所获得的就是视图坐标系中的坐标触控事件 MotionEvent中封装的一些常用的