C++ 具名要求: Compare

来自cppreference.com
< cpp‎ | named req
 
 
 

比较 (Compare) 是一些标准库设施从用户提供的函数对象类型期待的要求集合。

应用到满足比较 (Compare) 类型对象的函数调用运算的返回值,在按语境转换bool 时,若此类型所引入的严格弱序关系中调用的第一参数先出现于第二参数,则生成 true ,否则生成 false

同任何二元谓词 (BinaryPredicate) ,不允许该表达式的求值通过解引用的迭代器调用非 const 函数。

[编辑] 要求

类型 T 满足比较 (Compare) ,若

给定

  • compT 类型对象
  • equiv(a, b) ,等价于 !comp(a, b) && !comp(b, a) 的表达式

下列表达是必须合法且拥有其指定的效应

表达式 返回类型 要求
comp(a, b) 可隐式转换bool 建立有下列属性的严格弱序关系
  • 对于所有 acomp(a,a)==false
  • comp(a,b)==truecomp(b,a)==false
  • comp(a,b)==truecomp(b,c)==truecomp(a,c)==true
equiv(a, b) bool 建立有下列属性的等价关系
  • 对于所有 aequiv(a,a)==true
  • equiv(a,b)==trueequiv(b,a)==true
  • equiv(a,b)==trueequiv(b,c)==trueequiv(a,c)==true

注意: comp 引入在 equiv 所确定的等价类上的严格全序

[编辑] 标准库

下列标准库设施期待比较 (Compare) 类型。

唯一键的集合,按照键排序
(类模板) [编辑]
键值对的集合,按照键排序,键是唯一的
(类模板) [编辑]
键的集合,按照键排序
(类模板) [编辑]
键值对的集合,按照键排序
(类模板) [编辑]
改写容器来提供优先级队列
(类模板) [编辑]
将区间按升序排序
(函数模板) [编辑]
对元素进行排序
(std::forward_list 的公开成员函数) [编辑]
对元素进行排序
(std::list 的公开成员函数) [编辑]
将区间内的元素排序,同时保持相等的元素之间的顺序
(函数模板) [编辑]
将区间内较小的N个元素排序
(函数模板) [编辑]
对区间内的元素进行复制并部分排序
(函数模板) [编辑]
(C++11)
检查区间元素是否按升序排列
(函数模板) [编辑]
找出最大的已排序子范围
(函数模板) [编辑]
将给定的区间部分排序,确保区间被给定的元素划分
(函数模板) [编辑]
返回指向第一个不小于给定值的元素的迭代器
(函数模板) [编辑]
返回指向第一个大于给定值的元素的迭代器
(函数模板) [编辑]
判断一个元素是否在区间内
(函数模板) [编辑]
返回匹配特定键值的元素区间
(函数模板) [编辑]
合并两个已排序的区间
(函数模板) [编辑]
合并二个已排序列表
(std::forward_list 的公开成员函数) [编辑]
合并二个已排序列表
(std::list 的公开成员函数) [编辑]
就地合并两个有序的区间
(函数模板) [编辑]
如果一个集合是另外一个集合的子集则返回true
(函数模板) [编辑]
计算两个集合的差集
(函数模板) [编辑]
计算两个集合的交集
(函数模板) [编辑]
计算两个集合的对称差
(函数模板) [编辑]
计算两个集合的并集
(函数模板) [编辑]
将元素加入到堆
(函数模板) [编辑]
将堆中的最大元素删除
(函数模板) [编辑]
根据区间内的元素创建出一个堆
(函数模板) [编辑]
将堆变成一个排好序的区间
(函数模板) [编辑]
检查给定的区间是否为一个堆
(函数模板) [编辑]
查找区间中为堆的最大子区间
(函数模板) [编辑]
返回两个元素中的较大者
(函数模板) [编辑]
返回区间内的最大元素
(函数模板) [编辑]
返回两个元素中的较小者
(函数模板) [编辑]
返回区间内的最小元素
(函数模板) [编辑]
(C++11)
返回两个元素中的的较大者和较小者
(函数模板) [编辑]
返回区间内的最小元素和最大元素
(函数模板) [编辑]
如果按字典顺序一个区间小于另一个区间,返回true
(函数模板) [编辑]
按字典顺序产生区间内元素下一个较大的排列组合
(函数模板) [编辑]
按字典顺序产生区间内元素下一个较小的排列组合
(函数模板) [编辑]