Maison >développement back-end >C++ >Comment implémenter un ordre strict des faibles `
Comment définir l'opérateur< sur un n-Tuple pour un ordre faible strict
Introduction
L'ordre faible strict est un concept mathématique qui définit une relation entre deux objets. Il spécifie que si les objets x et y sont équivalents, alors f(x, y) et f(y, x) sont faux ; et si a est inférieur à b, alors f(a, b) est vrai et f(b, a) est faux.
Définition des n-Tuples
Pour un n-uplet, l'opérateur< peut être défini pour satisfaire un ordre faible strict en suivant ces conditions :
Implémentation
La définition ci-dessus peut être implémentée en C en suivant les étapes suivantes :
Exemple
Pour un 3-tuple, l'opérateur< peut être défini comme suit :
struct Triple { int x; int y; int z; bool operator<(const Triple& other) const { return (x < other.x) || (y < other.y) || (z < other.z); } };
En utilisant cette définition, deux triplets seraient équivalents s'ils ont des valeurs identiques pour x, y et z. Un triple serait considéré comme inférieur à un autre si l'un de ses composants est inférieur à ceux de l'autre triple.
std::tuple
Alternativement, le std:: La classe tuple fournie par la bibliothèque standard C implémente déjà un ordre strict et faible pour les tuples. Pour en profiter, les tuples peuvent être utilisés sans copier les objets qu'ils contiennent.
struct S { int a; int b; }; bool operator<(const S& lhs, const S& 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!