Strict Weak Ordering(严格弱顺序)

一般重载比较运算符时会涉及到这个名词。

常见的就是想用自定义结构题作为map或者multimap的key,

map是个利用红黑树的结构实现自排序(插入完成即排序完成),

排序就要有比较,所以如果map的key是自定义结构体S,

那就要重载S的小于运算符。

bool operator <(const S& s) const {......}

这个时候Strict Weak Ordering的概念就出来了:

对于你重载的<运算符要满足下面三个条件:

1.Strict:s < s 要必须返回false

2.Weak:s < t 和 t < s都返回false时,就说明s == t

3.Ordering:s < t为true 并且 t < z为true,则s < z也必须为true。

struct S
{
  int a;
  int b;
  bool operator <(const S& other)
  {
    if ( a < other.a )
      return true;
    else if ( a == other.a )
      return b < other.b;

    return false;
  }
};


你可能感兴趣的:(C/C++语言)