在我做array分类的题的时候,很多都容易超时,这个时候就可以考虑使用哈希表,unordered_map
或者map
,其中map
这一容器可以自动对key值排序。
一、map初始化方式
map<int, int>={{1,2}, {2,3}};
二、迭代器操作
定义iterator
类型,然后用for
循环,可以用first
和second
来访问map
中的两个元素。另外,对于map
中的insert
操作,需要用到pair
map<string,int> m;
m.insert(pair<string, int> ("guo", 99));
m.insert(pair<string, int> ("abc", 90));
map<string, int> ::iterator it;
for(it = m.begin(); it != m.end(); it++){
cout<<it->first<<endl;
cout<<it->second<<endl;
}
三、删除和插入操作
map<int, int> m;
m.insert(pair<int, int>(1,1)); // 插入操作 用pair
m.erase(1); // 删除key为1的元素
m.erase(m.find(1)); // 与上一句等同
四、查找(find)和计数(count)
- find函数返回迭代器(用
it->first
,it->second
来访问迭代器指向位置的key和value),如果查找成功,指向这一元素的位置,否则,返回m.end()
- count函数返回1或者0,查找成功返回1,否则返回0