ylww

随笔仅作学习记录,请辩证参考!!!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

引子

在set的类模板中,插入元素是会自动排序的,那么这是如何实现的呢。

默认的set<int>  setl; 这种写法,他会调用默认的less函数对象

less函数对象实现比较,为排序提供依据,set<int,  less<int>>  set1; (由小到大排序,即通过迭代器输出是,由小到大)

greater函数对象(仿函数)实现比较,set<int, greater<int>> set1; (大到小,即通过迭代器输出是,由大到小)

此外,如果set中插入的是自己定义的类,那么为了使less和greater函数能够正常使用,是需要在类中进行运算符重载的,less重载<,greater重载> 

 

 

补充

我们还可以自己定义仿函数。

 运行结果:

 

有个注意点,若是直接调用less<>或者greater<>等,需要自定义的类型自己重载<  ,>运算符。

但是如果像是上面那样调用FunStudent时,自定义类型可以不自己重载<,>运算符,因为有仿函数帮他比较。

posted on 2022-10-25 17:50  理想主义者光芒万丈  阅读(37)  评论(0)    收藏  举报