begin process at 2012 05 30 03:37:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

list et class - tri sur les pointeur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

list et class - tri sur les pointeur

jeudi 3 janvier 2008 à 19:13:12 | list et class - tri sur les pointeur

DroledeBx

Bonsoir, j'ai un problème avec une list. J'ai définit une class fiche. J'ai une list de pointeur vers des fiches. Je voudrais trier cette list. Avec sort, ça semble facile, à condition d'avoir un ordre sur le type de données de la list. Or j'ai surchargé l'operator< sur les fiches, pour avoir un ordre. Est-ce possible de faire de même sur des pointeurs (qui seront dans l'ordre des fiches vers lesquels ils pointent)? J'ai testé bool liste*::operator<(const fiche* fic){ if(**this<*fic){return true;} else{return false;} } Mais comme je le pensais, il considère que c'est une méthode de la class fiche. Comment lui dire que c'est la définition d'un ordre sur les pointeurs? Ou si qqn a une autre idée, elle sera la bienvenue. Merci d'avance DroledeBx
jeudi 3 janvier 2008 à 19:42:37 | Re : list et class - tri sur les pointeur

acx01b

salut

il faut faire une fonction séparée de ta classe je pense, ou friend si tu tries en fonction de champs privés

voila un exemple:

#include <iostream>
#include <list>
#include <string>

using namespace std;

bool compare (string *first, string *second)
{
  return *first < *second;
}

int main ()
{
  list<string*> mylist;
  list<string*>::iterator it;
  string un = "un", deux = "deux", trois = "trois";
  mylist.push_back (&un);
  mylist.push_back (&deux);
  mylist.push_back (&trois);


  cout << "mylist contains:";
  for (it=mylist.begin(); it!=mylist.end(); ++it)
    cout << " " << **it;
  cout << endl;

  mylist.sort(compare);

  cout << "mylist contains:";
  for (it=mylist.begin(); it!=mylist.end(); ++it)
    cout << " " << **it;
  cout << endl;

  return 0;
}

lundi 7 janvier 2008 à 19:23:03 | Re : list et class - tri sur les pointeur

DroledeBx

Effectivement, ça marche beaucoup mieux, en induisant un ordre sur les pointeurs. J'ai donc fait :

bool compare(fiche* A, fiche* B){return (*A)<(*B);}

J'avais surchargé l'opérateur < dans la classe fiche.
J'ai aussi une classe Repertoire qui contient une liste de pointeurs vers des fiches. Et une fonction Trier:

bool Repertoire::Trier(){L.sort(compare);}

Donc tout marche parfaitement.
Merci.



DroledeBx


Cette discussion est classée dans : ordre, class, pointeur, list, fiche


Répondre à ce message

Sujets en rapport avec ce message

Ordre de compilation des classes [ par 9sber ] Comment s'assurer qu'une classe est compilée avant une autre?Mon, pb est le suivant.Je suis sous VC++. J'ai une classe "R" qui hérite d'une classe "A" display list [ par adidmamah ] bon voici la situation : - j'ai un objet déclaré en variable globale- dans le constructeur de la class je cré la display list :glNewList(1,GL_COMPILE) Probleme avec pointeur urilisant string [ par Orlyn ] Bonjour, Je viens de finir mon prog de gestion de liste d'attente avec des structures comme ceci : struct Maillon { int numero; Maillon *suivant; pointeur de fonction membre [ par maximus4 ] bonjour a tous,je voudrai savoir comment on passe en paramètre d'une fonction membre une autre fonction membre d'une autre class déjà instanciéeex:cla Pb Class et pointeur ... [ par payen ] salut a tous,j'ai un petit probleme en C++: j'ai definit une class CImage, avec entre autre, un pointeur vers une variable de type char (char *nom_ima list (STL) de tableau [ par BozzoDodo ] Bonjour,j'aurais voulu créer une list de tableau.Je m'explique... en gros chaque élément de la liste possède 3 éléments (3 int par exemple).Mon code e Reutilisation de templates dans une méthode de class [ par mondrone ] Bonsoir, voilà mon problème : je tente de faire une class, contenant un std::list, mais cette classe elle même est en template. Pour certaines raiso problemme de trie [ par ymlcrom ] bonjour si qlq peut m'aider a trouver l erreur dans cette fonction de trie d'une list chainné void trie(fff*list,int max) { fff* t1; fff* t2; Surcharge des opérateurs [ par pinkettee ] Bonjour les amis, j'ai un petit problème à propos de la surcharge des opérateurs J'ai deux classes qui sont : class Cellule{ double note ; }; class mémoires partagée et placement new [ par mondrone ] Bonsoir, je me demandais s'il était possible, lors d'un placement new sur une class non POD (je suppose que std::string n'est pas plate, mais je me t


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales