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

SL & STL C++ Discussion :

[multi map] supprimer des éléments


Sujet :

SL & STL C++

  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [multi map] supprimer des éléments
    Bonjour à tous!

    Je crée une multimap:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PointDeControle::Tableau::const_iterator iter;
    std::multimap<float, int> liste_distance; // Possibilité de plusieurs distances égales
     
    for (iter = pdc_depart_.begin(); iter != pdc_depart_.end(); iter++) {
    	liste_distance.insert(std::multimap<float, int>::value_type(distCarre(iter->second, point_courant), iter->first) );
    } // On a une liste DISTANCE / Cle associée triée orde croissant
    Je possède maintenant une multimap avec un nombre quelconque d'élément (trié selon mon critère), et je ne voudrais garder que les n premiers éléments, c'est à dire supprimer tous les autres.

    J'ai bien entendu pensé à un "iter++" n fois et utiliser erase(iter, end), mais c'est pas une solution géniale.

    Si quelqu'un a une solution "propre" à me proposer (pas de recopie), je suis preneur !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Pour incrémenter plusieurs fois un itérateur il y a la fonction std::advance dans <iterator>.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    J'ai bien entendu pensé à un "iter++" n fois et utiliser erase(iter, end), mais c'est pas une solution géniale.
    Je ne vois pas mieux.

    Pour incrémenter plusieurs fois un itérateur il y a la fonction std::advance dans <iterator>.
    C'est juste une manière plus élégante d'écrire iter++ n fois.

    A part ça, juste au cas où, tu n'utilises pas ton multimap juste pour trier (auquel cas std::vector + std::sort serait plus approprié) ?

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Sylvain Togni
    Pour incrémenter plusieurs fois un itérateur il y a la fonction std::advance dans <iterator>.
    C'est exactement ce qu'il me fallait !!! Merci !
    (je suppose que ça fait n fois iter++ quand même, mais c'est plus propre !!! )

    Code Laurent Gomila : Sélectionner tout - Visualiser dans une fenêtre à part
    A part ça, juste au cas où, tu n'utilises pas ton multimap juste pour trier (auquel cas std::vector + std::sort serait plus approprié) ?
    Ca pourrait convenir, mais là le map contient :
    • la distance à comparer
    • la clé du point


    Les deux étant important, la map se justifie !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [multi map] supprimer des éléments
    Par poukill dans le forum C++
    Réponses: 3
    Dernier message: 22/05/2007, 12h17
  2. Supprimer des éléments d'une liste
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 15h08
  3. Réponses: 7
    Dernier message: 16/05/2006, 15h40
  4. Supprimer des éléments dans une TreeView ?
    Par souch dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/09/2005, 12h20
  5. Supprimé des éléments vide d'un tableau
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 04/07/2005, 19h40

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