Bonjour à tous, mon problème est assez clair... J'ai lu sur http://cpp.developpez.com/faq/cpp/?page=STL qu'on pouvait faire un sort sur un vector, ce dont j'ai enormément beosin.
En gros, j'ai un zoo à gérer, avec des animaux (mignon, hein), et je dois trier les animaux selon leur identifiant, en utilisant la STL, et ici, j'ai choisi un vector. BON.
J'ai donc deux classes, une zoo et une animal, sachant que dans zoo, je stocke un vector d'animaux, que je dois trier selon leur id...
Voici la déclaration d'animal, avec la surcharge de l'opérator < nécessaire à std::sort:
La surcharge de <:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class animal { private: int id; string nom; int age; race *r; public: //constructeurs animal(int id, int age, string nom, race* r); /*animal(int id, string nom); animal(int id); animal(); //affichage*/ void aff_animal(); int getid(){ return id;} bool operator< ( const animal & comparer) const; };
et mon tri (ici, on est dans la classe zoo, et ani est le vector d'animaux):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 bool animal::operator< (const animal & comparer) const{ if(this->id < comparer.id) return true; return false; }
Bref, je compile, aucune erreur. Je lance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 std::sort( this->ani.begin(), this->ani.end()); cout<<"trié"<<endl; if(this->ani[0]<this->ani[1]) { cout<<"YEEAAH";} else{ cout<<"blaaah";}
Lorsque j'affiche mon vector, après avoir utilisé ma methode de tri, il ne l'est pas. J'ai essayé de foutre un cout<< dans la surcharge de <, mais ça n'affiche rien. Ensuite, j'ai toujours un YEEAAH qui s'affiche... quelque soit l'id de l'animal.
Voila, je galère depuis 2 bonnes heures, à chercher sur le net, et ça a l'air de marcher pour tout le monde, mais pas pour moi... :'(
j'ai aussi essayé en donnant une fonction (sort peut avoir 3 arguments...), mais pareil.
merci à ceux qui auront le courage de m'aider.
Partager