COMPARAISON À TROIS VOIES <=>

Salut ce forum apprends les bases du c++

Moderator: Rick

Post Reply
Hydraxx
Site Admin
Posts: 114
Joined: Mon Jan 12, 2026 4:04 pm
Location: France
Contact:

COMPARAISON À TROIS VOIES <=>

Post by Hydraxx »

COMPARAISON À TROIS VOIES <=>

À QUOI ÇA SERT ?

Historiquement, pour rendre un type comparable, il fallait parfois définir plusieurs opérateurs :

Code: Select all

==
!=
<
<=
>
>=
C++20 introduit <=> pour centraliser une partie de cette logique.


1. EXEMPLE SIMPLE

Code: Select all

auto result = a <=> b;
Le résultat indique si :
  • a est inférieur ;
  • égal ;
  • supérieur ;
  • éventuellement non ordonné.

2. POUR UN TYPE PERSONNALISÉ

Code: Select all

struct Version
{
    int major;
    int minor;

    auto operator<=>(const Version&) const = default;
};
Le compilateur peut comparer d’abord major puis minor.

Exemple :

Code: Select all

Version a{1, 2};
Version b{1, 5};

if (a < b)
{
}

3. strong_ordering


Pour des valeurs ayant un ordre total propre.

Exemple :
  • entiers.

4. partial_ordering


Les flottants peuvent contenir NaN.

NaN n’est ni inférieur, ni égal, ni supérieur de manière normale.

D’où la notion d’ordre partiel.


À RETENIR


Ce mécanisme est utile à reconnaître en C++ moderne, mais il est moins fondamental pour le bas niveau que :
  • pointeurs ;
  • mémoire ;
  • types ;
  • références ;
  • durée de vie.

Return to “Bases du C++”

Who is online

Users browsing this forum: No registered users and 1 guest