C++ named requirements: Compare
Compare 是一组标准库设施对用户提供的函数对象类型所期望的要求集合。
当满足 Compare 类型的对象进行函数调用操作时,其返回值在 转换 为 bool 类型后,若调用中的第一个参数在该类型所诱导的 严格弱序关系 中位于第二个参数之前,则结果为 true ,否则为 false 。
与任何 BinaryPredicate 一样,该表达式的求值不允许通过解引用迭代器调用非const函数,且从语法上,函数调用操作必须接受 const 对象参数,无论参数是 const 还是非常量,其行为都应保持一致。
目录 |
需求规范
类型
T
满足
Compare
条件,当且仅当
-
类型
T满足 BinaryPredicate ,且
给定
-
comp,一个类型为T的对象, - equiv ( a, b ) ,一个 表达式等价 于 ! comp ( a, b ) && ! comp ( b, a ) 的表达式。
以下表达式必须有效并具有其指定效果:
| 表达式 | 返回类型 | 要求 | ||||
|---|---|---|---|---|---|---|
| comp ( a, b ) |
|
建立具有以下性质的
严格弱序
关系:
|
||||
| equiv ( a, b ) | bool |
建立具有以下性质的
等价关系
:
|
注意:
comp
在由
equiv
确定的等价类上引入了
严格全序
。
标准库
以下标准库设施期望一个 Compare 类型。
|
键的唯一集合,按键排序
(类模板) |
|
|
键值对集合,按键排序,键具有唯一性
(类模板) |
|
|
键的集合,按键排序
(类模板) |
|
|
键值对集合,按键排序
(类模板) |
|
|
适配容器以提供优先队列功能
(类模板) |
|
|
将范围按升序排序
(函数模板) |
|
|
对元素进行排序
(
std::forward_list<T,Allocator>
的公开成员函数)
|
|
|
对元素进行排序
(
std::list<T,Allocator>
的公开成员函数)
|
|
|
对元素范围进行排序,同时保持相等元素间的相对顺序
(函数模板) |
|
|
对范围的前N个元素进行排序
(函数模板) |
|
|
复制并部分排序元素范围
(函数模板) |
|
|
(C++11)
|
检查范围是否按升序排序
(函数模板) |
|
(C++11)
|
寻找最大有序子范围
(函数模板) |
|
对给定范围进行部分排序,确保其按指定元素完成分区
(函数模板) |
|
|
返回指向首个
不小于
给定值的元素的迭代器
(函数模板) |
|
|
返回指向首个
大于
特定值的元素的迭代器
(函数模板) |
|
|
确定元素是否存在于部分有序范围中
(函数模板) |
|
|
返回匹配特定键的元素范围
(函数模板) |
|
|
合并两个已排序的范围
(函数模板) |
|
|
合并两个已排序的列表
(
std::forward_list<T,Allocator>
的公开成员函数)
|
|
|
合并两个已排序列表
(
std::list<T,Allocator>
的公开成员函数)
|
|
|
就地合并两个有序范围
(函数模板) |
|
|
若一个序列是另一个序列的子序列则返回
true
(函数模板) |
|
|
计算两个集合的差集
(函数模板) |
|
|
计算两个集合的交集
(函数模板) |
|
|
计算两个集合的对称差
(函数模板) |
|
|
计算两个集合的并集
(函数模板) |
|
|
向最大堆添加元素
(函数模板) |
|
|
从最大堆中移除最大元素
(函数模板) |
|
|
将元素范围转换为最大堆
(函数模板) |
|
|
将最大堆转换为按升序排序的元素范围
(函数模板) |
|
|
(C++11)
|
检查给定范围是否为最大堆
(函数模板) |
|
(C++11)
|
寻找构成最大堆的最大子范围
(函数模板) |
|
返回给定值中的较大者
(函数模板) |
|
|
返回范围内的最大元素
(函数模板) |
|
|
返回给定值中的较小值
(函数模板) |
|
|
返回范围内的最小元素
(函数模板) |
|
|
(C++11)
|
返回两个元素中的较小值和较大值
(函数模板) |
|
(C++11)
|
返回范围中的最小和最大元素
(函数模板) |
|
若一个范围按字典序小于另一个范围则返回
true
(函数模板) |
|
|
生成一个范围内元素的下一个更大字典序排列
(函数模板) |
|
|
生成元素范围的下一个较小字典序排列
(函数模板) |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
| DR | 适用版本 | 发布行为 | 正确行为 |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
返回类型到
bool
的上下文可转换性
未能反映实现实践 |
修正要求规范 |
| LWG 3031 | C++98 | 对 const 值的要求不足 | 强化要求规范 |
另请参阅
|
(C++20)
|
规定某个
relation
施加严格弱序
(概念) |
| 比较运算符 |
<
、
<=
、
>
、
>=
、
==
、
!=
及
<=>
(C++20)
对参数进行比较
|