算法学习
这里附上我老婆的照片,每天激励我学习
学习内容的原始链接
主要学习内容是来自夜深人静写算法的STL的学习,感兴趣的可以自己去看一下哦~
有序键值对 map
1.map的解释
map
翻译过来就是映射
的意思,是常用的STL容器,在判断数字是否在某个文件当中出现过,如果使用bool型的 hash[size] 对x是否在文件当中时,如果数据量很大的话,就会导致内存不够,此时就需要我们学习并了解map
,使用map
可以将数字当成字符串,然后建立string至int的映射
2.map的定义
map在使用过程当中我们需要注意,其需要使用到确定映射前类型键key这样一个概念和映射后类型value
map<typename1, typename2>mp;
这里注意到的是mp
是我给这个映射的一个名称,方便后续的书写,也可以根据需要进行修改如下:
map<int,string>int2string;
这样就表示有int类型映射到string的一个类型
3.map与unordered_map
map
的应用场景和 unordered_map
大致是一样的,但是其效率是低于unordered_map
,unordered_map
唯一的缺点就是它不是有序的,map
的底层实现主要是依靠红黑树,而unordered_map
是使用哈希表
4.map的实际操作函数
map
的操作函数有insert(),**erase()等,感兴趣的可以看我之前整理的一个幕布上面 的思维导图,是根据书本<<算法笔记>>**所写的,C++STL的介绍感兴趣的同学可以看一下
有序集合set
1.set的解释
set
翻译为集合,是一个内部自动有序且不含重复元素的容器,set
的一大优势就在于可以实现自动排序,就不需要使用**sort()**这些做法,使其更加简便
2.set的定义
根据我们前面对map
理解的,我们可以把set
看作是key和value是相等的键值对,那么其定义如下:
set<typename> st;
set<int> intSet;
其表示写法是和map
有着大同小异的含义,大家可以自行理解一下
3.set和unordered_set
set
的应用场景和 unordered_set
大致是一样的,但是其效率是低于unordered_set
,unordered_set
唯一的缺点就是它不是有序的,set
的底层实现主要是依靠红黑树,而unordered_set
是使用哈希表
4.set的实际操作函数
map
的操作函数有insert(),find()等,感兴趣的可以看我之前整理的一个幕布上面 的思维导图,是根据书本<<算法笔记>>所写的,C++STL的介绍感兴趣的同学可以看一下
需要注意的是对于集合来说,键就是值,没有修改的概念
学习新得体会
今天的学习内容是什么呢?就是我们的有序集合,希望大家在实际的应用过程当中充分的并熟练这一部分的内容