map(进阶)
关于map的各种神仙用法……
某用map水的弱题单
映射
map<int,int>mp;
map<string,int>mp;
map<string,string>mp;
map<int,long>mp;
map<long,int>mp;
map<long,long>mp;
…………………………
各种各样的映射……
二维:
map<int,map<int,int> >;
不用人话说就是你建立了一个由int到由int到int的映射的映射;
稍微用人话说就是你先建立了一个由int到map的映射,然后这个map里有一个由int到int的映射。
用人话说就是你建立了一个二维map。
从左往右三个int,第一维是第一个int,第二维是第二个int,存的数就是第三个int;
!!注意了,二维map最后两个‘>’中间必须有空格,不然的话C++会以为你写了个‘>>’,然后编译不过。
三维四维同理
神奇:
map<int,int>far;
int find(int x){return far[x]==x?x:far[x]=find(far[x]);}
常数会炸,又不会离散化的,map做并查集,嘿嘿;
map<int,vector<int> >mp;
map<int,set<int> >mp;//此用法鸣谢ghc提供
map套vector,map套set,嘿嘿。当然一般用不到,可是此博客最上面那题单里的某个题可以这么水掉;
map<int,bool>pd;
map<long long,bool>pd;
map<string,bool>pd;
map<int,map<int,bool> >pd;
不管什么类型,map都能用来打标记;
map<你咋定义的咋填>::iterator 指针名;
这玩意就是定义一个map类型的指针