栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C++STL容器之map

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++STL容器之map

STL大法,谁用谁说好!

一、map

map翻译为映射,是STL常用的一种容器。其实,数组也是一种映射,比如int a[100],就是定义了一个从int(键)到int(值)的映射。数组总是将int类型映射到其他基本类型(数组的基本类型),这同时也带来了一个问题,如果我们吧string映射到int,数组就不方便了。这时就可以用map,map可以将任何基本类型(包括STL)映射到任何基本类型(包括STL)。

map的主要功能——

1.map可以将任何基本类型映射到任何基本类型

2.map提供一对一的数据处理,key——value键值对,类型自定,第一个为关键字,第二个为值

3.根据key值快速查找记录,复杂度为O(㏒ n)如果有1000个记录,最多查找10次。

(1)map的定义

map容器定义于map头文件,并存放于std命名空间里,若想要在程序中使用map,则先要写下代码:

#include
using namespace std;

定义map的方法如下:

map name;
//第一个typename是映射前的类型,第二个是映射后的类型

map的键和值也可以是STL容器,如map,int>


(2)map的访问

map两种访问方式,下标访问和迭代器访问

下标访问像普通数组一样,例如先定义map mp;,我们就可以通过mp['c']的方式来访问他的对应元素,如mp['c'] = 124;

通过迭代器访问,需要先做如下定义

map::iterator it;

 因为map的每一对映射都有两个typename,所以我们要用it->first访问键 it->second来访问值

例如:

map mp;
mp['m'] = 20;
mp['a'] = 40;
mp['r'] = 30;
map::iterator it;
for(it = mp.begin() ; it!= mp.end() ; it++)//还可以写auto,省去了map::iterator it;
    cout<first<<" "<second< 

输出如下

a 40

m 20

r 30

可以看出,map在建立映射的同时,会按照键从小到大排序。这是因为map内部使用红黑树实现,set也是如此(set的解释见我的文章C++STL容器之set)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028467.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号