C++ 命名需求: 比较
来自 cppreference.com
比较 是一组标准库设施对用户提供的函数对象类型期望的要求。
当将应用于满足 比较 的类型的对象的函数调用操作的返回值 转换为 bool 时,如果调用的第一个参数在此类型引起的 严格弱排序关系 中出现在第二个参数之前,则产生 true,否则产生 false。
与任何 二元谓词 一样,不允许对该表达式的计算通过解引用迭代器调用非常量函数,并且在语法上,函数调用操作必须接受 const 对象参数,无论参数是 const 还是非 const,行为都相同。
内容 |
[编辑] 要求
如果类型 T
满足以下条件,则类型 T
满足 比较:
- 类型
T
满足 二元谓词,并且
给定
-
comp
,类型T
的一个对象, - equiv(a, b),表达式等效 于 !comp(a, b) && !comp(b, a)。
以下表达式必须有效,并具有其指定的效应:
表达式 | 返回类型 | 要求 | ||||
---|---|---|---|---|---|---|
comp(a, b) |
|
建立 严格弱排序 关系,具有以下属性:
| ||||
equiv(a, b) | bool | 建立 等价关系,具有以下属性:
|
注意:comp
在 equiv
确定的等价类上引起 严格全排序。
[编辑] 标准库
以下标准库设施期望 比较 类型。
唯一键的集合,按键排序 (类模板) | |
键值对的集合,按键排序,键是唯一的 (类模板) | |
键的集合,按键排序 (类模板) | |
键值对的集合,按键排序 (类模板) | |
调整容器以提供优先队列 (类模板) | |
将范围排序为升序 (函数模板) | |
对元素进行排序 ( 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) 比较参数。 |