STL中相等(equality)与等价(equivalence)的区别
1.相等(equality) 【无序数据】
相等关系是以operator ==为基础的。
a与b相等: a == b
例子:find,count,count_if等等大部分函数
2.等价(equivalence) 【已序数据】
等价关系是以“在已排序的空间中对象值得相对顺序”为基础的。也就是说,如果两个值中任何一个(按照既定的排列顺序)都在另一个的前面,那么他们就是等价的。
a与b等价: !(a < b) && !(b < a) 或者更一般的(不是以默认的less<T>作为比较规则):
AssociativeContainer x;
! x.key_compare()(a,b) && !x.key_compare()(b,a)
例子