#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <set>
#include <map>//map也会有俩 一个 map 一个multimap 但是multimap不会去用




using namespace std;

int main(){
    //map和set是类似的 底层实现都是红黑树 不一样的是map的写法很奇幻
    
    map<int, int> a;//map是一个映射 或者说里面存的是一个二元组 他会把第一个元素映射到第二个元素
    a[1] = 2;
    
    a[1000000000] = 3;
    
    cout << a[1000000000] << endl;
    //map在定义完之后用法其实跟数组差不多
    
    
    // 为了和数组区分 所以map第一个值可以定义成其他类型
    map<string, vector<int>> b;
    b["yxc"] = vector<int>({1, 2, 3, 4});
    cout << b["yxc"][2] << endl;//map的所谓数组下标可以定义成字符串
    
    
    
    
    //插入可以这样写
    b.insert({"a", {}});//插入可以插入一个二元组 a是第一个string类型 第二个元祖是第二个类型
    cout << b["yxc"][0] << endl;
    
    
    // find和set一样也可以查找
    cout << (b.find({"yxc") == b.end()) << endl;
    //find和send一样里面是传入一个key?send是啥?
    
    
    
    
    
    return 0;
    //map是一个肥肠有用的结构 可以像用数组一样去用其他的变量、结构
}