(aide) Surcharge d'operateur en c++

Surcharge d'operateur en c++ (aide) - C++ - Programmation

Marsh Posté le 08-11-2005 à 13:51:15    

:hello:
 
J'essaye d'utiliser la fonction de la STL binary_search() avec des objet d'une classe que j'ai crée (Individu)
 
La classe Individu contient 2 parametres, nom et prenom sous forme de chaine de caracteres
 
Voici le code :

Code :
  1. Individu *individu1 = new Individu("nom1","prenom" );
  2. Individu *individu2 = new Individu("nom2","prenom"
  3. Individu *individu3 = new Individu("nom3","prenom" );
  4. deque<Individu> d2;
  5. d2.push_back(*individu1);
  6. d2.push_back(*individu2);
  7. d2.push_back(*individu3);
  8. Individu *aRechercher = new Individu("nom2","prenom" );
  9. cout << binary_search(d2.begin() , d2.end() , *aRechercher) << endl;


 
A ce niveau on me demande de redefinir l'opérateur <, seulement je ne sais pas comment le redefinir. J'ai passé des heures à chercher sur google et je n'ai rien trouvé.
 
J'ai essayé ça mais sans succes :
 

Code :
  1. bool operator<(std::deque<Individu>::iterator debut , std::deque<Individu>::iterator fin , Individu i) {
  2.    ...
  3.    printf("operateur appelle\n" );
  4. }


 
Est ce que vous avez une solution ?
Merci par avance


Message édité par xavier- le 08-11-2005 à 13:53:59
Reply

Marsh Posté le 08-11-2005 à 13:51:15   

Reply

Marsh Posté le 08-11-2005 à 13:53:24    

Code :
  1. class Individu
  2. {
  3. ..
  4. bool operator < (const Individu & ) const
  5. {
  6.   //a toi d'ecrire le code de la comparaison entre deux individus
  7. }
  8. }

Reply

Marsh Posté le 08-11-2005 à 13:58:58    

ca marche !!
je m'attendais pas a une reponse si rapide :)
 
merci 1000 fois

Reply

Marsh Posté le 11-11-2005 à 02:12:15    

J'ai le même probleme avec des chaines de caracteres et je ne vois pas comment le résoudre :/
 

Code :
  1. bool operator<(string &s1 , string &s2) {
  2.   ...
  3. }
  4. int main() {
  5.   deque<string> d;
  6.   d.push_back("need" );
  7.   d.push_back("help" );
  8.   cout << binary_search(d.begin() , d.end() , "help" ) << endl;
  9. }


 
Ca ne marche pas (retourne 0), je ne comprend pas ça parait pourtant sensé :(
des idées ?


Message édité par xavier- le 11-11-2005 à 02:13:27
Reply

Marsh Posté le 11-11-2005 à 12:34:10    

la fonction binary_search nécessite que les éléments entre begin() et end() soient triés dans un ordre croissant, je ne sais pas si c'est le cas ici, mais si ce n'est pas le cas, elle explique ton résultat.

Reply

Marsh Posté le 11-11-2005 à 13:57:41    

et accessoirement (meme si ce n'est pas la la cause de ton pb), ton prototype de surcharge manque de const

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed