C++ 具名要求:比较 (Compare)
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    比较 (Compare) 是一些标准库设施针对用户提供的函数对象类型所期待的一组要求。
对满足比较 (Compare) 的类型的对象运用函数调用操作的返回值,当按语境转换成 bool 时,若此类型所引入的严格弱序关系中,该调用的第一实参先于第二实参,则生成 true,否则生成 false。
与任何二元谓词 (BinaryPredicate) 相同,不允许该表达式的求值通过解引用的迭代器调用非 const 函数。
要求
以下情况下,类型 T 满足比较 (Compare) 
-  类型 
T满足二元谓词 (BinaryPredicate) ,且 
给定
-  
T类型的对象comp -  
equiv(a, b),为等价于!comp(a, b) && !comp(b, a)的表达式 
下列表达是必须合法且拥有其指定的效果
| 表达式 | 返回类型 | 要求 | 
|---|---|---|
| comp(a, b) | 可隐式转换为 bool |  建立具有下列性质的严格弱序关系
  | 
| equiv(a, b) | bool |  建立具有下列性质的等价关系
  | 
注:comp 在 equiv 所确定的等价类上引入了一种严格全序。
标准库
下列标准库设施期待比较 (Compare) 类型。
|    唯一键的集合,按照键排序  (类模板)  | |
|    键值对的集合,按照键排序,键是唯一的  (类模板)  | |
|    键的集合,按照键排序   (类模板)  | |
|    键值对的集合,按照键排序   (类模板)  | |
|    适配一个容器以提供优先级队列  (类模板)  | |
|    将范围按升序排序   (函数模板)  | |
|    (C++11)  | 
   对元素进行排序  ( std::forward_list<T,Allocator> 的公开成员函数)  | 
|    对元素进行排序  ( std::list<T,Allocator> 的公开成员函数)  | |
|    将范围内的元素排序,同时保持相等的元素之间的顺序   (函数模板)  | |
|    排序一个范围的前 N 个元素   (函数模板)  | |
|    对范围内的元素进行复制并部分排序   (函数模板)  | |
|    (C++11)  | 
   检查范围是否已按升序排列   (函数模板)  | 
|    (C++11)  | 
  找出最大的已排序子范围  (函数模板)  | 
|    将给定的范围部分排序,确保其按给定元素划分   (函数模板)  | |
|    返回指向第一个不小于给定值的元素的迭代器   (函数模板)  | |
|    返回指向第一个大于给定值的元素的迭代器   (函数模板)  | |
|    确定元素是否存在于某范围中   (函数模板)  | |
|    返回匹配特定键值的元素范围   (函数模板)  | |
|   归并两个有序范围  (函数模板)  | |
|    (C++11)  | 
  合并两个有序 list ( std::forward_list<T,Allocator> 的公开成员函数)  | 
  合并两个有序 list ( std::list<T,Allocator> 的公开成员函数)  | |
|    就地归并两个有序范围   (函数模板)  | |
|    若一个序列是另一个的子列则返回 true   (函数模板)  | |
|    计算两个集合的差集   (函数模板)  | |
|    计算两个集合的交集   (函数模板)  | |
|    计算两个集合的对称差  (函数模板)  | |
|    计算两个集合的并集   (函数模板)  | |
|    将一个元素加入到一个最大堆   (函数模板)  | |
|    从最大堆中移除最大元素   (函数模板)  | |
|    从一个元素范围创建出一个最大堆   (函数模板)  | |
|    将一个最大堆变成一个按升序排序的元素范围   (函数模板)  | |
|    检查给定范围是否为一个最大堆   (函数模板)  | |
|    (C++11)  | 
   查找能成为最大堆的最大子范围   (函数模板)  | 
|    返回各给定值中的较大者   (函数模板)  | |
|    返回范围内的最大元素   (函数模板)  | |
|    返回各给定值中的较小者  (函数模板)  | |
|    返回范围内的最小元素   (函数模板)  | |
|    (C++11)  | 
    返回两个元素的较小和较大者   (函数模板)  | 
|    (C++11)  | 
   返回范围内的最小元素和最大元素   (函数模板)  | 
|    当一个范围按字典顺序小于另一个范围时,返回 true   (函数模板)  | |
|    产生某个元素范围的按字典顺序的下一个较大的排列   (函数模板)  | |
|    产生某个元素范围的按字典顺序的下一个较小的排列   (函数模板)  | 
参阅
|    (C++20)  | 
  指定一个 relation 所强加的是严格弱序 (概念)  |