Problème de tri de vecteur

Problème de tri de vecteur - C++ - Programmation

Marsh Posté le 28-02-2008 à 10:46:37    

Bonjour à tous,
 
Je souhaiterais trié un vecteur de Match selon leur date dans mon prog, la classe se compose comme ceci:
 

Code :
  1. class Match{
  2. private:
  3. string lieu;
  4. vector<Equipe*> Rencontre;
  5. Date Date_Rencontre;


 
Ensuite j'ai une classe Session comme ceci:

Code :
  1. class Session{
  2. vector<Match*> Tab_Match;
  3. vector<Equipe*> Tab_Equipe;


 
Et donc j'essaye de trier dans la classe Session le vecteur Tab_match en fonction de la date de ceux-ci.
J'ai donc déclarer une fonction de tri dans Match comme ceci:

Code :
  1. bool SortMatch(Match& M1, Match& M2)const{
  2.  return M1.Date_Rencontre.getDate()<M2.Date_Rencontre.getDate();
  3. }


la fonction getDate() me retourne une date de cette forme "1122007" pour une date qui correspond au 11/2/2007
 
la classe date est ainsi:

Code :
  1. class Date{
  2. private:
  3. string jour;
  4. string mois;
  5. string annee;
  6. friend Match;


 
Donc pour trier le vecteur Tab_Match dans ma classe Session il faut faire une fonction comme ceci:
 

Code :
  1. void sortMatchByDate(){
  2.  std::sort(Tab_Match.begin(), Tab_Match.end(), Tab_Match->SortMatch );
  3. }


Le dernier paramètre est faux et je ne vois pas comment faire...Pourriez vous m'aidez svp? Si il manque des bout de codes pour comprendre faîtes le moi savoir
 
Merci d'avance!


Message édité par Saubin le 28-02-2008 à 10:47:18
Reply

Marsh Posté le 28-02-2008 à 10:46:37   

Reply

Marsh Posté le 28-02-2008 à 11:08:25    

sort attend une fonction ou un foncteur de type :
 
bool (*)(const Date&,const date& )
 
Probleme : le membre SortMatch de la classe Date ont pour type :
 
bool (Date::*)(const Date&,const Date& )
 
Solution :
1/ rendre SortMatch static
2/ faire une classe de foncteur externe

Reply

Marsh Posté le 28-02-2008 à 11:19:52    

Joel F a écrit :

sort attend une fonction ou un foncteur de type :
 
bool (*)(const Date&,const date& )
 
Probleme : le membre SortMatch de la classe Date ont pour type :
 
bool (Date::*)(const Date&,const Date& )
 
Solution :
1/ rendre SortMatch static
2/ faire une classe de foncteur externe


"bool SortMatch(Match& M1, Match& M2)" est dans la classe Match je me suis peut être mal fait comprendre
 
Edit: En mettant SortMatch en static il me fait une erreur :
 
"error C2272: 'SortMatch' : modifiers not allowed on static member functions"
 
Edit2: J'ai rien dit il faut enlever le const, par contre dans l'apel de la fonction "void sortMatchByDate()" comment on met ça?


Message édité par Saubin le 28-02-2008 à 11:23:35
Reply

Marsh Posté le 28-02-2008 à 11:20:45    

le probleme ets le même ;). JE reecris donc :
 
sort attend une fonction ou un foncteur de type :
 
bool (*)(const Date&,const date& )
 
Probleme : le membre SortMatch de la classe Date ont pour type :
 
bool (Match::*)(const Match&,const Match& )
 
Solution :
1/ rendre SortMatch static dasn Match
2/ faire une classe de foncteur externe

Reply

Marsh Posté le 28-02-2008 à 11:25:45    

J'ai donc dans ma classe match
 

Code :
  1. static bool SortMatch(Match& M1, Match& M2){
  2.  return M1.Date_Rencontre.getDate()<M2.Date_Rencontre.getDate();
  3. }


 
Et ensuite il faut que j'apelle cette fonction dans ma classe session qui se compose comme suit:

Code :
  1. class Session{
  2. vector<Match*> Tab_Match;
  3. vector<Equipe*> Tab_Equipe;


 
Et j'appelle la fonction de tri contenu dans Session:

Code :
  1. void sortMatchByDate(){
  2.  std::sort(Tab_Match.begin(), Tab_Match.end(), ??? );
  3. }


 
Et à la place des "???" faut lui passer la fonction mais comment?


Message édité par Saubin le 28-02-2008 à 11:26:40
Reply

Marsh Posté le 28-02-2008 à 12:19:07    

Match::SortMatch

Reply

Marsh Posté le 28-02-2008 à 12:22:46    

Reply

Marsh Posté le 28-02-2008 à 12:58:29    

Joel F a écrit :

Match::SortMatch


Parfois je ne pense pas....

Reply

Marsh Posté le 28-02-2008 à 14:09:34    

Taz a écrit :

t'as trop de patience JoelF


 
C'est mon coté prof qui ressort  :whistle:

Reply

Marsh Posté le 28-02-2008 à 14:12:22    

Joel F a écrit :


 
C'est mon coté prof qui ressort  :whistle:


vu son SortMatch et son Tab_match, ça marche toujours pas toutes façons.

Reply

Marsh Posté le 28-02-2008 à 14:12:22   

Reply

Marsh Posté le 28-02-2008 à 14:28:12    

j'avais même pas vu [:pingouino]

Reply

Marsh Posté le 28-02-2008 à 15:55:01    

Taz a écrit :


vu son SortMatch et son Tab_match, ça marche toujours pas toutes façons.


C'est bon ça marche, j'ai changé deux trois trucs, merci pour votre aide

Reply

Sujets relatifs:

Leave a Replay

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