1:
这是map的定义:map<key,value> mp;
,其中key是映射的起点,可以为任何类型。value为映射的终点值。
2:
当map的key是类或结构体时,需要定义重载operator <运算符。因为map内部是自动有序的,当key为结构体时,我们需要为其制定排序方法,即重载operator <运算符。
如,对于以下结构体,可以制定如下的重载operator <运算符函数:
struct info
{
int num;
int loc;
bool operator < (const info& a) const
{
if (loc < a.loc)
return 1;
else if (loc == a.loc)
{
if (num < a.num)
return 1;
else
return 0;
}
else
return 0;
}
};
3
关于map和unordered_map:
输入map里的元素会按照key的大小自动排序。输入unordered_map里的元素并非不排序,而会按照一种未知的顺序排序。
4
当map为map<int,int>或map<int,bool>时,其中所有的second值都会被初始化为0(不管map中是否有该值的key)
如:
map<char, bool> mp;
mp['a'] = 1;
cout << mp['a'] << endl;
cout << mp['b'] << endl;
结果为:
1
0