A voir également:
- Tri en fonction d'un paramétre en c++
- Fonction si et - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Parametre windows - Guide
2 réponses
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