c++集/映射如何检查键的相等性?
例如,在本例中:
struct A
{
int id , val;
A( int _val = 0 , int _id = 0 )
{ val = _val , id = _id; }
bool friend operator < ( const A &x , const A &y )
{
return x.val < y.val;
}
};
set< A > s;
因为我们还没有编写==运算符?
它检查if (!(x < y) && !(y < x))
std::set
未使用operator==
。元素a和b被认为是相等的iff !(a < b) && !(b < a)
注意:如果定义相等的意义不同于排序,则集合可能不合适。集合中的相等本质上意味着这两个元素在排序的项目序列中具有相同的位置。