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<map>
using namespace std;

定义map的方法如下:

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

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


(2)map的访问

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

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

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

map<typename,typename>::iterator it;

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

例如:

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

输出如下

a 40

m 20

r 30

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值