萌新关爱之——STL_map

前言

嗨嗨嗨,大家好!我是正在写开场白の施忆晨,我又来更新萌新关爱系列啦!今天我们要讲的是——STL中的map!
后期仔:我们上节课讲的是树,感兴趣的同蟹可以去上节课)康康~~

STL是什么?

在编程时,我们经常会遇到复杂的情况,于是乎我们只能自己写函数。
But!
这是C语言中的情况。
于是乎,智慧的C++开发者们在C++中加入了一个新东东,那就是————————————
STL模板库!
在STL中封装了许多实用の函数,这个神操作让我们能不用骗分更便捷的写代码,
就是你!还不感谢开发者大大!

1999DBFFE2184815E5802035882F4740

今天我们要讲什么?

咳咳(战术性清嗓)
我们要讲的是MAP,之后会讲SET,and—vector.
为什么没有stack(栈)?
因为我不懂QWQ

map

灰常的有用!
它要怎么用呢?
让我们看一道题。

1.定义一个整数序列{1,1,4,5,1,4},该如何用程序统计每个数字出现的次数?

相信这道题对各位oier非常的简单。
定义一个数组,下标出现的数字就行了。
很简单是不是?
那让我们再来看一道题。

给你一个字符串序列{“man”,“what”,“can”,“i”,“say”},该如何用程序统计每个字符串出现的次数?

想出来了吗?
用map!!

map的定义

map(映射)是一个常用的STL容器,它可以将任何基本类型映射到任意基本类型。像这个:

map<string,int>man;

这句代码就可以把string到int的映射。
这时,就有好事好奇的同学要问了:
啊楼主楼主,映射是什么意思啊?
emm…
打个比方,
正道的光照在你身上,就会在你身后投下影子,这时,你的身体和你的影子就构成了 映 射 关 系。
懂了没得?
讲回代码。
在<>中要填写两个类型,一个是键(key)的类型,一个是值(value)的类型。

map容器内元素的访问——通过键来访问

因为map中的元素是键值对,所以我们可以通过键来访问它们的值。
注意!
map中的键是唯一的。
让我们来看一个例子,更了解我上面说的那段话。

map<string,int>mp;
map[“man”]++;//这相当于下标为"man",而值为0
map[“what”]++;
map[“can”]++;
map[“i”]++;
map[“say”]++;
cout<<map[“man”]<<" "<<map[“what”]<<endl;//2 1

map容器内元素的访问——通过迭代器来访问

auto的用法我们后面会讲到。
map因为有其特殊的存储方式,所以我们通过auto it来访问键和值。
其中,it->first访问键,it->second访问值。
注意,map中是根据键的大小来排序的,从小到大。

让我们来看一个例子,更了解我上面说的那段话。

写法1:
for(auto it=mp.begin();it!=mp.end();it++){
cout<< it->first << " " << it->second << endl ;
}
写法2:
for(auto it:mp){
cout << e.first << " " << e.second << endl ;
}

map函数の使用

终于讲到心心念念のmap函数了!
下面我来讲讲map中的常用函数。

1.size()

跟队列,栈中的一样,获取map中元素的个数,时间复杂度为O(1)。

2.find(key)

返回键为key的迭代器,key可以改成其它名字。时间复杂度为O(logN)。

3.erase()

这个函数有两个用法。
1.删除单个元素的迭代器:
erase(it)
2.删除单个元素的键:
erase(key)

4.clear()

用来清空map中的所有元素,时间复杂度为O(N)。
--------------------------------------------------分割线--------------------------------------------------
好啦,这次的分享就到这啦,下次我会更新什么我也不知道,敬请期待QWQ

鸣谢

大佬@徐熙喆的Latex教学贴与大佬@汪嘉乐的Markdown教学贴让我受到了很多启发。

另外

制作不易,点个赞吧(擦泪(┳_┳)…)

友情链接

打个广告
我有自己的网站啦!
幻界星语服务器 | 官方网站
域名不定时换,详情看我主页OvO

今天就到这里

下次再见!!!

作者:@施忆晨
笔记:@施忆晨
美工:@施忆晨

12 个赞

原本想把三种都写完的,手敲麻了QWQ

5 个赞

image

2 个赞

好像应该是//1 1

2 个赞

我好像这一段代码有问题qwq

1 个赞

我再康康

1 个赞

无标题

2 个赞

很适合新手看(当然,我不是新手),給赞了

1 个赞

建议发到经验分享区。

1 个赞

看在你如此努力的份上,给你点赞了

2 个赞