SGI

关系运算符

类别:实用工具 组件类型:函数

原型

template <class T> bool operator!=(const T& x, const T& y);
template <class T> bool operator>(const T& x, const T& y);
template <class T> bool operator<=(const T& x, const T& y);
template <class T> bool operator>=(const T& x, const T& y);

说明

相等可比较要求指定必须能够使用以下项来比较对象operator!=以及operator==;类似地小于可比较要求包括operator>, operator<=operator>=以及operator<。然而,从逻辑上讲,这些运算符中的大多数是冗余的:所有这些都可以通过以下方式定义operator==operator<.

这四个模板使用operator==operator<来定义另外四个关系运算符。它们的存在纯粹是为了方便:它们使编写算法成为可能,算法涉及运算符!=, >, <=,和>=, 而不要求为每种类型显式定义那些运算符。

正如相等可比较要求中指定的那样x != y等效于!(x == y)。正如小于可比较要求中指定的那样x > y等效于y < x, x >= y等效于!(x < y),和x <= y等效于!(y < x).

定义

在标准标题utility中定义,在非标准的向后兼容标题function.h中定义。

类型要求

operator!=的要求是x == y是类型xyT.

operator>的要求是y < x是类型xyT.

operator<=的要求是y < x是类型xyT.

operator>=的要求是x < y是类型xyT.

先决条件

operator!=的要求是xy的先决条件在operator==.

operator>, operator<=,和operator>=的要求是xy的先决条件在operator<.

复杂性

示例

template <class T> void relations(T x, T y)
{
  if (x == y) assert(!(x != y));
  else assert(x != y);

  if (x < y) {
    assert(x <= y);
    assert(y > x);
    assert(y >= x);
  }
  else if (y < x) {
    assert(y <= x);
    assert(x < y);
    assert(x <= y);
  }
  else {
    assert(x <= y);
    assert(x >= y);
  }
}  

备注

另请参见

Equality ComparableLessThan Comparable
[Silicon Surf] [STL Home]
Copyright © 1999 Silicon Graphics, Inc.保留所有权利。 商标信息