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>来保存一个节点上的多条边

 

 

 

 

 

    

posted @ 2023-01-15 15:53  次林梦叶  阅读(115)  评论(0)    收藏  举报