Je rencontre fréquemment des situations, en particulier avec le tri en C++, où je compare une série de champs afin de comparer une structure plus grande. Un exemple simplifié:Comment structurez-vous vos fonctions de comparaison?
struct Car{
Manufacturer make;
ModelName model;
Year year;
};
bool carLessThanComparator(const Car & car1, const Car & car2){
if(car1.make < car2.make){
return true;
}else if(car1.make == car2.make){
if(car1.model < car2.model){
return true;
}else if(car1.model == car2.model){
if(car1.year < car2.year){
return true;
}
}
}
return false;
}
Mon approche instinctive semble lourde, en particulier pour plus de 3 champs. Comment structureriez-vous cette série de comparaisons en C++? Les autres langues fournissent-elles une syntaxe plus succincte ou élégante?
Style personnel - J'implémenterais une fonction (ou méthode) de type 'strcmp()' qui renvoie 0 si a est égal à b, 1 si a est supérieur à b, et -1 si a est inférieur à b, puis définir les opérateurs de comparaison (si vous voulez) et/ou les méthodes en fonction de la fonction de comparaison. Ensuite, nous aurions juste 'bool carLessThanComparator (const Car & voiture1, const Car & car2) {return cmp (car1, car2) == -1; } ' –