首先知道map索引快的原因是会根据key值自动排序,底层原理是红黑树。
当基础类型作为key可能无法满足索引条件时(有可能根据多个条件进行排序,比如大家都距离终点100米但还是需要排序),可以使用自定义结构体做为key值索引,以下为自定义类型作为key值时自定义排序规则,本质是用重载运算符<号实现。
struct MyKey{
double achievement;
string name;
bool operator < (const MyKey& mapkey) const{
if(achievement > mapkey.achievement){
return false;
}
else if(achievement < mapkay.achievement){
return true;
}
else if(name < maykey.name){
return true;
}
return false;
}
};
这样插值之后就会根据自定义的规则自动排序了。