某些时候可能要用一个数组作为map的key,这时候有一些细节需要注意。
struct key
{
int a[5];
};
首先,用自定义类型做key时,要重载<操作符。格式如下(括号外的const少了会报错的):
bool operator<(const key& k) const
{
//...
}
然后,比较时需要对数组每个比较,若是直接return a[0]<k.a[0],则只相当于用了一个整数做key:
for(int i=0; i<5; ++i)
{
if(a[i] == k.a[i])
continue;
else
return a[i] < k.a[i];
}
return false;