我们接上文
映射map
概念
map 翻译为映射,其实数组就是一种映射。他们是一一对应的,数组总是把 int类型 映射到其它基本类型,因为数组下标只能是 int 。它可以将任何基本类型 (包括容器) 映射到任何基本类型。
定义
#include<map>
using namespace std;
map<typename1, typename2> name;
常用函数
- find() 和 size()
find(key) 是返回键为 key 的映射的迭代器,时间复杂度为 O ( l o g 2 n ) O(log_{2}n) O(log2n),n 为 map 中映射的对数。
size() 用来获得 map 中映射的对数,时间复杂度为 O ( 1 ) O(1) O(1)。 - erase()
erase() 可以删除单个元素,也可以删除一个区间内的所有元素。删除单个元素可以用 erase(it) ,其中 it 为要删除元素的迭代器,时间复杂度为 O ( 1 ) O(1) O(1) 。也可以用 erase(key) ,key 为要删除元素的键,时间复杂度为 O ( l o g 2 n ) O(log_{2}n) O(log2n)。 - clear()
clear() 用来清空 map 。时间复杂度为 O ( n ) O(n) O(n)。
二元结构体pair
概念
pair是 ”二元结构体” 的替代品,将 两个元素 捆绑在一起,节省编码时间。相当于一下定义.
定义
#include<map>
using namespace std;
pair<typename1, typename2> name;
常用函数
- make_pair(a, b)
make_pair(a, b) 定义一个新的 二元结构体 包含a,b元素 - pair<string, int> p;
pair<string, int> p;
p.first = “haha”;
p.second = 5;
.first, .second 均表示访问1, 2元素
集合set
概念
set 翻译为集合,是一个内部自动有序且不含重复元素的容器。set最主要的作用就是自动去重并按升序排序。set 中的元素是唯一的,其内部采用 红黑树 实现。
定义
#include<set>
using namespace std;
set<typename> name;
集合set
- insert() 和 size()
insert(x) 用来将 x 插入到 set 中,并自动递增排序和去重,时间复杂度为 O ( l o g 2 n ) O(log_{2}n)