#include<map>
using std::map;
1.map的定义
map<typename1,typename2> name;
typename1为键(key),keyname2为值(value)
2.map容器内元素的访问
(1)下标访问
注意一个键只能对应一个值
map<char,int> mp;
mp['a']=100;
mp['a']=120;
cout<<mp['a'];
//输出120
(2)迭代器访问
迭代器定义与其他STL相同
map<typename1,typename2>::iterator it;
使用上与其他STL有区别,因为迭代器需要同时能访问到键和值,使用->first和->second分别访问键和值
注意:map会按照键的大小进行自动排序,类似于set
#include<bits/stdc++.h>
using namespace std;
signed main(void)
{
map<char,int> mp;
mp['c']=1;
mp['b']=2;
mp['a']=3;
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
{
printf("%c %d\n",it->first,it->second);
}
return 0;
}
/*
输出结果为(自动排序)
a 3
b 2
c 1
*/
3.map常用函数解析
(1)find()
find(key)返回键为key的映射的迭代器,时间复杂度为O(logn),n为map中映射个数
#include<bits/stdc++.h>
using namespace std;
signed main()
{
map<char,int> mp;
mp['b']=2;
mp['c']=1;
mp['a']=3;
map<char,int>::iterator it=mp.find('b');
printf("%c %d\n",it->first,it->second);
/*若该键值存在,则返回该键值所在的
迭代器位置,不存在则返回end()迭代器位置
*/
return 0;
}
(2)erase()
1.erase(it) it为待删除元素的迭代器,时间复杂度O(1)
2.erase(key) key为待删除元素的键,时间复杂度为O(logn),n为map内元素个数
3.erase(first,last) 左闭右开,[first,last),时间复杂度为last-first
(3)size()
返回映射对数,O(1)
(4)clear()
清空元素,O(n),n为元素个数
4.map常见用途
multimap(一个键对应多个值)、unordered_map(不排序)