cppreferenceによると:
不等式比較(<、>)では、最初の要素が最初に比較され、不等式比較がそれらに当てはまらない場合にのみ、2番目の要素が比較されます。
これは次のように変換されます。
return ((a.first < b.first) || (!(b.first < a.first) && (a.second < b.second)));
私の質問は、なぜそれがそれほど直感的でないのですか?その背後にある理由は何ですか?そして、この推論が正しい答えにつながる例はありますか?
実装は単純に次のようになると思いました。
return a.first < b.first && a.second < b.second