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