template<class T1, class T2>
bool operator<(const pair<T1, T2> &x, const pair<T1, T2> &y)
{
return x.first < y.first || (!(y.first < x.first) && x.second < y.second);
}
其中对于“return”一句我有疑问:根据短路规则,当“||”操作符的第一部分“x.first < y.first”成立时,不用计算“return”语句的后部分,返回“true”。当“x.first < y.first”不成立时,才计算“||”操作符的后半部分。“x.first < y.first”不成立的意思就是“x.first >= y.first”。“||”操作符的后半部分语句中的“!(y.first < x.first)”为何不直接写成“x.first == y.first”呢?求解,谢谢各位!!