C++ named requirements: Compare
Compare 是一组标准库设施对用户提供的函数对象类型所期望的要求集合。
当满足 Compare 类型的对象进行函数调用操作时,其返回值 转换 为 bool 后,若调用中的第一个参数在该类型所诱导的 严格弱序关系 中位于第二个参数之前,则结果为 true ;否则结果为 false 。
与任何 BinaryPredicate 一样,对该表达式的求值不允许通过解引用迭代器调用非const函数,且在语法上,函数调用操作必须接受 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
(函数模板) |
|
|
计算两个集合的差集
<span class |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时的行为 | 正确行为 |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
返回类型到
bool
的上下文可转换性未能
反映实际实现情况 |
修正了要求规范 |
| LWG 3031 | C++98 | 对 const 值的要求不够充分 | 强化了要求规范 |
参见
|
(C++20)
|
指定
relation
施加严格弱序
(概念) |
| 比较运算符 |
<
,
<=
,
>
,
>=
,
==
,
!=
和
<=>
(C++20)
,用于比较参数
|