map
知识支持:
1.键或值为pair<>类型
map<int ,pair<int ,int > >mymap;//值是pair类型
如果你想要检查某点对(x,y)是否插入到map中,那么应该这么定义:
map<pair<int ,int > ,int >mymap;
假设你想要检查点(x,y)是否在之前出现过,这么判断:
if(mymap.count(make_pair(x,y))) puts("YES"); else puts("NO")
2.嵌套map
参考资料:戳这里👉
map<map<int ,int >,int >mymap;//键为嵌套map
对于这种定义方式,类似于 mymap[x][y]=z 的方式就不能用了;
那么,如何赋值呢?
map<int ,int >tmp; tmp.insert(make_pair(1,2)); mymap[tmp]=2;
如果想要判断某点对(x,y)是否在之前出现过,该怎么判断呢?
#include<bits/stdc++.h> using namespace std; map<map<int ,int > ,int >mymap; int main() { map<int ,int >tmp; tmp.insert(make_pair(2,3)); tmp.insert(make_pair(3,2)); mymap[tmp]=2; tmp.clear(); tmp.insert(make_pair(2,3)); printf("%s\n",mymap.count(tmp) ? "YES":"NO");///输出"NO" printf("%s\n",mymap.find(tmp) != mymap.end() ? "YES":"NO");///输出"NO" tmp.insert(make_pair(3,2)); printf("%s\n",mymap.count(tmp) ? "YES":"NO");///输出"YES" printf("%s\n",mymap.find(tmp) != mymap.end() ? "YES":"NO");///输出"YES" return 0; }