Définition de l'opérateur < pour un ordre faible strict sur un n-tuple
Question :
Comment implémenter le < opérateur pour un n-tuple (par exemple, 3-tuple) qui adhère au concept d'ordre faible strict ?
Réponse :
Comprendre l'ordre faible strict
L'ordre faible strict est une relation mathématique qui définit une comparaison spécifique entre deux objets :
Mise en œuvre de la < Opérateur
Pour définir le < opérateur pour un n-uplet, vous devez établir les conditions qui déterminent quand un tuple est considéré comme équivalent ou inférieur à un autre. Cela dépend de la structure de données spécifique et de la sémantique de votre tuple.
Exemple avec std::tuple
La classe std::tuple de la bibliothèque standard C implémente un correct &Lt ; opérateur pour un ordre faible strict. Si vous ne parvenez pas à utiliser cette classe, vous pouvez implémenter manuellement votre propre < opérateur :
struct S { ThingA a; ThingB b; }; bool operator<(S const& lhs, S const& rhs) { return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b); }
Cela suppose que ThingA et ThingB implémentent déjà un ordre faible strict.
Vous pouvez également implémenter l'égalité en utilisant une approche similaire :
bool operator==(S const& lhs, S const& rhs) { return std::tie(lhs.a, lhs.b) == std::tie(rhs.a, rhs.b); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!