Глобальные сравнения неравенства для пары <> в стандарте C ++

Согласно cppreference :

При сравнении неравенств () сравниваются первые элементы во-первых, и только если сравнение неравенства для них неверно, сравниваются вторые элементы.

что переводится примерно так:

return ((a.first < b.first) || (!(b.first < a.first) && (a.second < b.second)));

Я спрашиваю, почему это так не интуитивно? Какова причина этого? И есть ли примеры, когда эти рассуждения приводят к правильным ответам?

Я думал, что реализация будет простой:

return a.first < b.first && a.second < b.second

5
задан Soo Wei Tan 2 May 2012 в 20:56
поделиться