Pourquoi avons-nous besoin d'un tel opérateur en C++ et comment est-il utile dans la programmation C++ moderne? Tout exemple de code du monde réel où cela peut être appliqué sera utile.
Cette question vise à comprendre l'application pratique dans le monde réel sans lire la proposition verbeuse de Herb Sutter. Aucune infraction à la proposition cependant.
Je vais vous donner trois points de motivation, juste du haut de ma tête:
>
, >=
, ==
, <=
, <
. En utilisant <=>
(Vaisseau spatial), vous pouvez implémenter chacune de ces autres opérations de manière complètement générique.strcmp()
de la bibliothèque standard C. Donc - utile pour tout ce qui a un ordre lexicographique, comme les données dans des vecteurs ou des listes ou d'autres conteneurs ordonnés.x86
Ou x86_64
La comparaison de a et b (CMP RAX, RBX
) Revient essentiellement à soustraire (SUB RAX, RBX
) Sauf que RAX
ne change pas réellement, seuls les drapeaux sont affectés, vous pouvez donc utiliser "sauter sur égal/non égal/supérieur à/inférieur à/etc." (JE/JNE/JGT/JLT etc.) comme instruction suivante. CMP
doit être considéré comme une "comparaison de vaisseau spatial".