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

