Maison >développement back-end >C++ >Comment définir le `
Définition de l'opérateur '<' pour un ordre faible strict sur des tuples
Pour qu'un n-tuple satisfasse un ordre faible strict, il doit remplir les critères suivants :
Alors que la bibliothèque boost propose une classe de tuple prédéfinie avec l'opérateur '<' en adhérant à un ordre faible strict, vous souhaiterez peut-être définir votre propre opérateur pour un contexte spécifique.
Voici comment implémenter l'opérateur '<' manuellement :
struct S { ThingA a; ThingB b; }; bool operator<(S const& lhs, S const& rhs) { return std::make_tuple(lhs.a, lhs.b) < std::make_tuple(rhs.a, rhs.b); }
Dans cet exemple, nous exploitons la fonction std::make_tuple pour créer un tuple à partir des éléments individuels de S sans les copier. Ensuite, nous comparons les tuples à l'aide de l'opérateur générique de comparaison de tuples.
Pour l'opérateur '==', vous pouvez suivre une approche similaire :
bool operator==(S const& lhs, S const& rhs) { return std::make_tuple(lhs.a, lhs.b) == std::make_tuple(rhs.a, rhs.b); }
N'oubliez pas que ces implémentations supposent que ThingA et ThingB a son propre opérateur '<' et l'opérateur '==' défini pour un ordre faible strict.
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!