Re: Confusion on the spaceship operator in C++20

Hello,

Usually, three way comparison returns -1, 0 or 1 depending on if left operand is less, equal or greather than right operand.

In fact, it's a generalization of strcmp. It isn't very useful in if/else statements as such, but is very useful in find, search and sort algorithms.

Usually one implement std::less a.k.a. operator <, and all other comparisons are made from it, i.e. a>b is b<a, a>=b is !(a<b), a<=b is !(b<a), a==b is !(a<b)&&!(b<a) and a!=b is (a<b)||(b<a).
In sorted datastructures, three way comparison is known to be simpler to implement and a little more efficient than std::less for a various set of cases. String comparison is one of them.


For your small example, given that it generally returns -1, 0 or 1, I think that x<=>y will return the same as x!=y.

In C++, comparisons is based on std::less for historical reasons. Many more recent languages always use three way comparison as a default, for example Java with Comparator and Comparable interfaces.

-- 
Audiogames-reflector mailing list
Audiogames-reflector@sabahattin-gucukoglu.com
https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
  • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : camlorn via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : camlorn via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Aminiel via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Aminiel via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : camlorn via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : camlorn via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : camlorn via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Aminiel via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : camlorn via Audiogames-reflector
    • ... AudioGames . net Forum — Developers room : Ethin via Audiogames-reflector

Reply via email to