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)
例子:标准关系容器(已排序)set/multiset/map/multimap的成员函数;
binary_search,low_bound/upper_bound/equal_range函数。
(整理自Efficient STL)