[C++] trier un vector avec une fonction de comparaison

trier un vector avec une fonction de comparaison [C++] - Programmation

Marsh Posté le 23-02-2001 à 14:20:33    

salut,
j'ai des vector qui représentent des activités... avec des dates définies dans des structures :  
struct Date
{    int numero_semaine;
     int numero_jour;
     int heure;
}
 
et je voudrais trier les activités du vecteur par ordre chronologique en utilisant l'algorithme sort de la STL :
 
genre :
vector<activités> sports;
...
sort(sports.begin(), sports.end(), fonction_de_comparaison());
 
Mais ça ne semble pas marcher. SI qqun peut m'aider c'est cool, je saurais faire autrement sans utiliser la STL et le sort mais j'aimerais savoir l'utiliser car ça peut être pratique.
Merci à vous

Reply

Marsh Posté le 23-02-2001 à 14:20:33   

Reply

Marsh Posté le 23-02-2001 à 14:53:13    

Qu'est ce qui marche pas ?

Reply

Marsh Posté le 23-02-2001 à 15:16:52    

ben j'arrive pas à lui faire comprendre d'utiliser la fonction de comparaison.
Mais avec l'aide de visual C++ je viens de trouver des trucs interessants :
il faudrait redéfinir des fonctions :
bool operator==(activités & a1, activités & a2)
et  
bool operator<(activités & a1, activités & a2)
 
mais je dois les déclarer en friend dans la classe activités car elles utilisent a1.date->heure par exemple
 
Je bosse dessus pour le moment

Reply

Marsh Posté le 23-02-2001 à 15:28:39    

Oui soit tu définis un opérateur de comparaison pour les objets activités (et dans ce cas, plus besoin de fonction dans l'appel sort), soit tu définis un objet fonction de comparaison que tu mets dans l'appel sort.
Le troisième argument de sort n'est une fonction mais un oject fonction (ou foncteur).

 

--Message édité par Verdoux--

Reply

Marsh Posté le 23-02-2001 à 16:15:48    

Zorglub c'est pas bien de faire sauter les cours de réseaux pour finir son TP de C++


---------------
http://www.chadenat.forez.com
Reply

Marsh Posté le 23-02-2001 à 17:44:58    

je sais mais ct urgent, et j'ai rien compris au cours précédent !
Je te jure que je viens mardi prochain. :jap:

Reply

Marsh Posté le 10-05-2010 à 16:34:45    

salut  
j'ai une classe  point défini comme suit:
float x;
float y;
std::list<point*>* list_point;
je souhaite trier list_point du point le plus proche au point le plus loin du point a qui appartient list_point.
est ce possible de le faire directement avec une fonction de comparaison qui utiliserai le x et le y .
Pour l'instant je n'ai reussi ce tri qu'en créant une nouvelle classe comprenant le pointeur vers le point et la distance au point.
 
globalement je souhaite avoir une fonction de comparason qui ressemblerai à ca(pour l'instant le compilateur n'accepte pas que j'utilise x et y dans la fonction de comparaison) :
 
struct MyGreater2 {
 bool operator() (const point* c1,const point* c2)
 {
float dist_c1=(c1->x-x)*(c1->x-x)+(c1->y-y)*(c1->y-y);
float dist_c2=(c2->x-x)*(c2->x-x)+(c2->y-y)*(c2->y-y);
 return dist_c1 < dist_c2;
 };
};

Reply

Sujets relatifs:

Leave a Replay

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