Есть равенство (equality) == .
Есть эквивалентность(equivalence) !(a < b) && !(b < a).
Не очень понимаю, зачем нужна эквивалентность?
Потому что не всё, что эквивалентно — равно. Самый банальный пример: строка «Привет» эквивалентна «привет», если нас интересует их порядок в некотором списке, где не учитывается регистр. Но, очевидно, что эти строки не равны. Есть множество примеров различных сущностей, которые считаются эквивалентными, но не являются равными. В топологии таких примеров полно, например.
Наглядный пример, кроме выше сказанного: std::map<key_type, mapped_type>
Сравнивает свои key_type компаратором std::less<key_type>. Чтобы узнать, есть такой ключ, он может делать только сравнение типа !(a < b) && !(b < a).
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости