从cplusplus.com:STL集的两个元素何时被认为是相同的?
template < class Key, class Compare = less<Key>,
class Allocator = allocator<Key> > class set;
“比较:比较类:A类,是以相同的类型容器元件的两个参数,并返回一个布尔表达式排版(A,B),其中补偿是这个比较类的一个对象,a和b是容器的元素,如果在严格的弱排序操作中将a放置在比b更早的位置,它将返回真,它可以是实现函数调用操作符的类或一个指向函数的指针(参见构造函数举例),默认为less,这与应用小于运算符(a <
b)相同返回 set对象使用此表达式来确定元素的位置在th e容器。 “
假设比较类用于决定两个对象中的哪一个是”较小“还是”较小“,那么类将如何检查两个对象是否是两个元素是相等的(例如,以防止插入相同的元素两次)?
我可以想象这里有两种方法:一种是在后台调用(a == b),但不提供重写此比较的选项( (默认值越小越好)对我来说似乎不太对,另一种假设是(a == b)==!(a < b)& &!(b < a);那就是如果两者都不相等,则认为两个要素相等是比其他的“少”,但不知何故,这也不适合我,因为比较可以是任意复杂类的对象之间的任意复杂的布尔函子。
那么它是如何做到的?