主要目的:
- 这里主要是用map对一个自定义的类进行排序,其实类似结构体的排序,但是这是在插入的过程中直接排序的。
- map中的保存有重复的值其实是可以更改的,一切都在那个比较函数的使用
//要求对下列结构体安装name,或则id进行排序,或者二分查找排序,使用upper_bound和lower_bound查找指定的name,id
struct student{
string name;
int id;
student(string name, int id):name(name),id(id){}
};
方法:
2.1 重写结构体的内部比较操作operator<(),在map的insert方法中,会首先查找有没有该值,如果有的话,就不插入,这个是被封装好了的,使用的<号,但是我们可以重载该方法
- 结构体排序
- 利用map内部的比较函数,
- value的排序
2.1 在结构体中重写operator<()操作符,这是由于map中insert在插入前会进行查找,如果找到了就返回false,不进行插入,所以这里直接重载该比较操作符,修改其中的值。因为结构体使我们自己建的,不是一些常用的类型,比如string,int这写都有类模板,但是如果出现一个新的类,程序就找不到具体要比较的值了,所以必须重写。
struct student{
string name;