STL中相等(equality)与等价(equivalence)的区别

STL中相等(equality)与等价(equivalence)的区别

1.相等(equality) 【无序数据】
相等关系是以operator ==为基础的。
a与b相等: a == b
例子:find,count,count_if等等大部分函数

2.等价(equivalence) 【已序数据】
等价关系是以“在已排序的空间中对象值得相对顺序”为基础的。
a与b等价: !(a < b) && !(b < a) 或者更一般的(不是以默认的less作为比较规则):
 AssociativeContainer x;
 ! x.key_compare()(a,b) && !x.key_compare()(b,a)
例子:标准关系容器(已排序)set/multiset/map/multimap的成员函数;
 binary_search,low_bound/upper_bound/equal_range函数。

(整理自Efficient STL)

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