在第一种情况下,代码工作正常,但是在第二种代码中出现错误,唯一的区别是运算符重载'
class first
{
public:
int y;
bool operator < (first t) const
{
return (y>t.y);
}
};
set<first> f;
2。
class first
{
public:
int y;
bool operator < (first t)
{
return (y>t.y);
}
};
set<first> f;
std::set
的默认比较器是std::set
,正如我们在std::less<Key>
上看到的那样,它定义:
lhs < rhs
,与标准库中的大多数其他容器一样,将要求bool operator < (first t)
用于其比较功能。 std::set
要求强制保持一致性: