探究c++中map的自动排序问题

本文探讨如何在C++的map中对自定义类进行排序。通过重写结构体的`operator<()`,map在插入时会根据这个比较函数进行查找和排序。同时,介绍了如何为map的value定制排序规则,包括直接修改`operator<()`和使用自定义比较函数。最后,通过sort函数实现对map中value的排序。
摘要由CSDN通过智能技术生成

主要目的:

  1. 这里主要是用map对一个自定义的类进行排序,其实类似结构体的排序,但是这是在插入的过程中直接排序的。
  2. 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方法中,会首先查找有没有该值,如果有的话,就不插入,这个是被封装好了的,使用的<号,但是我们可以重载该方法

 

 

  1. 结构体排序
  2. 利用map内部的比较函数,
  3. value的排序

2.1 在结构体中重写operator<()操作符,这是由于map中insert在插入前会进行查找,如果找到了就返回false,不进行插入,所以这里直接重载该比较操作符,修改其中的值。因为结构体使我们自己建的,不是一些常用的类型,比如string,int这写都有类模板,但是如果出现一个新的类,程序就找不到具体要比较的值了,所以必须重写。

struct student{
    string name;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值