STL----set与unordered_set map 与 unordered_map
《set与unordered_set》
首先介绍一下set:
set的在算法竞赛中主要作用是去重,附带一点可以自动排序的好处
unordered_set与set的主要区别是set是自动排序的,
而unordered_set不会,如果只是注重去重功能,用unordered_set会更快快一点
《map与unordered_map》
这也是 map与unordered_map的主要区别,
map会自动排序,而unordered_map不会,
map查找元素为O(logn),而unordered_map为O(1);
同时 unordered_map的key只能为基本类型:int,char,string
不能是 pair<int,int> ,struct 等
《map的基本使用方法》
《添加元素》
insert是进行插入key
同时还有一种添加元素的方式是:list1[{2,13}]=....,
这个方式与上面的list1.insert({2,13})效果是同样的
《删除元素》
一般都是用删除迭代器的方法:
《lower_bound和upper_bound方法》
如果找不到返回map.end();
如果找到了
返回一个迭代器指针
idx->first 为key
idx->second 为 value
《使用案例》
《unordered_map用来当做string类型的边》
像这道题,各个字符串之间是有关系的
我们要在各个字符串之间建边,从而得到一种关系
这个图该如何建立?
用unordered_map<string,vector<string>>mp
key值为string毫无疑问
应为可能有如下情况:
所以我们要用vector<string>来保存一个节点上的多条边