仿函数
仿函数(functor),就是使一个类的使用看上去像一个函数。就是类中实现一个operator(),这个类就有了类似函数的行为。
要使用STL内建的仿函数,必须包含<functional>
头文件。而头文件中包含的仿函数分类包括
- 算数类仿函数
- 加:plus\
- 减:minus\
- 乘:multiplies\
- 除:divides\
- 模取:modulus\
- 否定:negate\
- 关系运算类仿函数
- 等于:equal_to
- 不等于:not_equal_to
- 大于:greater
- 大于等于:greater_equal
- 小于:less
- 小于等于:less_equal
- 逻辑运算仿函数
逻辑与:logical_and
逻辑或:logical_or
逻辑否:logical_no
set中的排序
set里面自定义类型的时候,默认给的比较函数是less<结构名>
,插入元素的时候,会进行元素的比较。
解决方案:
- 在类型中定义一个比较函数
|
|
当然,也可以用greater作为比较,比如set<symbol, greater<symbol>> test
。
- 自己写一个仿函数
|
|