#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <set>
#include <map>


//讲义中没有提到的数据结构
#include <unordered_set>
//无序的set

#include <unordered_map>//和map对应的是这个 里面也有unordered_multimap 但不常用就不讲了

using namespace std;

int main(){
    unordered_set<int> S; //底层实现是哈希表 不能存储重复元素
    //和set是完全一样的用法 只是没有 lower_bound() upper_bound()两个函数
    
    // find~啥插入啥都是O(1)的时间复杂度 set所有操作是O(logN)的
    // 所以相比于set来说unordered_set效率会快一些
    // 但是不能支持二分 因为他是无序的
    
    unordered_multiset<int> b; //也是哈希表 里面是可以存在重复元素的
    
    
    
    
    unordered_map<int, int> c;//好处是效率更高 map所有操作都是O(logN)的 但是他是O(1)的 但是坏处是不能支持二分 但是一般不会用map做二分
    
    //所以map我们会尽可能用unordered_map
    
    return 0;
}