IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Tri particulier d'un std::list


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyse syst�me
    Inscrit en
    Novembre 2011
    Messages
    51
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Analyse syst�me
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par d�faut Tri particulier d'un std::list
    Bonjour,

    J'ai une std::list qui contient des elements std::pair<std::string, int>, comme le montre le code ci-dessous.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
      std::list<std::pair<std::string, int> >alist;
      std::pair<std::string, int> mp0("cde", 2);
      std::pair<std::string, int> mp1("fgh", 1);
      std::pair<std::string, int> mp2("abc", 3);
      alist.push_back(mp0);
      alist.push_back(mp1);
      alist.push_back(mp2);
    Ce que je veux, c'est trier cette liste selon le deux element de la std::pair (donc le int). Si je fais alist.sort(), ca trie selon le premier element (c-a-d le std::string), ce que je ne veux pas.




    Ca c'est mon premier souci. Le deuxieme c'est que une fois que la liste soit triee, je me demande s'il y a un truc dans la STL pour ne retenir que les 5 premiers elements de cette derniere et virer de la liste tous les autres.




    Je vous remercie d'avance

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2010
    Messages
    872
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par d�faut
    Tu peux donner un pointeur sur fonction � la m�thode sort de la std::list comme montr� ici pour pouvoir faire le tri comme tu veux.

    Pour ce qui est de ne garder que les 5 premiers �l�ments, tu as la m�thode erase (description ici) et je me demande si la m�thode resize pourrait faire �a aussi... A tester !

  3. #3
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    en regardant la doc std::list, tu trouveras la fonction sort.
    Cette fonction peut prendre en param�tre un comparateur, une structure qui surcharge l'op�rateur () prenant en param�tre 2 const& �l�ments du type que contient ta liste, et retourne true si le premier est inf�rieur au 2� (doit �tre plac� avant dans la liste), false sinon.

    Pour r�cup�rer les 5 premiers �l�ments, plusieurs options
    - une nouvelle liste, copie des 5 �l�ments ? list::assign
    - garder uniquement les 5 premiers ? list::resize
    entre autre
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  4. #4
    Membre averti
    Homme Profil pro
    Analyse syst�me
    Inscrit en
    Novembre 2011
    Messages
    51
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Analyse syst�me
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par d�faut
    Merci tout plein, je vais regarder tout ca et je posterai ici ma solution.
    Merci encore

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [ListView] tri particulier (comparaison num�rique)
    Par Cybher dans le forum C++Builder
    R�ponses: 16
    Dernier message: 28/07/2005, 14h12
  2. [dev-C++]std::list<tree_node<T>*> iterator;
    Par jmv dans le forum Dev-C++
    R�ponses: 7
    Dernier message: 06/05/2005, 13h14
  3. acceder au n i�me element d'une liste std::list
    Par sorari dans le forum SL & STL
    R�ponses: 4
    Dernier message: 23/03/2005, 15h21
  4. [std::list][find_if] probl�me avec mes foncteurs
    Par n!co dans le forum SL & STL
    R�ponses: 12
    Dernier message: 04/02/2005, 11h56
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    R�ponses: 4
    Dernier message: 18/12/2003, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo