Tri en fonction d'un paramétre en c++
Fermé
Utilisateur anonyme
-
10 janv. 2010 à 14:44
mamiemando Messages postés 33665 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2025 - 10 janv. 2010 à 15:08
mamiemando Messages postés 33665 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2025 - 10 janv. 2010 à 15:08
A voir également:
- Tri en fonction d'un paramétre en c++
- Fonction si et - Guide
- Remettre parametre usine pc - Guide
- Faire un tri sur excel - Guide
- Netflix paramètre compte - Guide
- Parametre windows - Guide
2 réponses
smag42
Messages postés
200
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 mai 2014
10
10 janv. 2010 à 15:06
10 janv. 2010 à 15:06
tu veut faire quel sorte de trie soit plus explicite sur ta fonction.
mamiemando
Messages postés
33665
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 mai 2025
7 850
10 janv. 2010 à 15:08
10 janv. 2010 à 15:08
En admettant que tu aies stocké ton animal sous forme d'une structure ou d'une classe et que tu aies défini un opérateur < pour cette classe, tu peux utiliser le container STL std::set. Commence par lire ceci :
https://forums.commentcamarche.net/forum/affich-37604421-introduction-a-la-stl-en-c-standard-template-library
Voici ce que ça donne :
À l'exécution on obtient :
Bonne chance
https://forums.commentcamarche.net/forum/affich-37604421-introduction-a-la-stl-en-c-standard-template-library
Voici ce que ça donne :
#include <iostream> #include <string> #include <set> class animal_t{ protected: std::string nom; int id; public: animal_t(){} animal_t(const std::string & nom0,int id0): nom(nom0), id(id0) {} inline int get_id() const{ return id; } inline const std::string & get_nom() const{ return nom; } }; // Cet opérateur sera utilisé par std::set pour trier les éléments inline bool operator < ( const animal_t & animal1, const animal_t & animal2 ){ return (animal1.get_id() < animal2.get_id()) || (animal1.get_id() == animal2.get_id() && animal1.get_nom() < animal2.get_nom()); } // Cet opérateur permet d'écrire un animal inline std::ostream & operator << ( std::ostream & out, const animal_t & animal ){ out << '[' << animal.get_id() << ',' << animal.get_nom() << ']'; return out; } int main(){ std::set<animal_t> animaux; animaux.insert(animal_t("chouette",4)); animaux.insert(animal_t("tapir",2)); animaux.insert(animal_t("pangolin",7)); // On parcourt le std::set pour afficher les éléments. // Ils sont écrits du plus petit au plus grand (au sens de l'opérateur <) // En réalité : std::set<T> équivaut à std::set<T,std::less<T> > (avec T = animal_t) // ... et std::less<T> repose sur l'opérateur < qui prend deux opérandes de type T { std::set<animal_t>::const_iterator sit (animaux.begin()), send(animaux.end()); for(;sit!=send;++sit){ const animal_t & animal_cur = *sit; std::cout << animal_cur << std::endl; } } }
À l'exécution on obtient :
[2,tapir] [4,chouette] [7,pangolin]
Bonne chance