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 :

STL : retirer une liste d'une liste


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut STL : retirer une liste d'une liste
    Bonjour, j'ai croisé 2-3 questions sur le sujet mais pas dans mon contexte :

    C'est presque tout dans le titre... j'ai 2 listes STL et je voudrais exclure l'une de l'autre. Existe-il une fonction toute faite ? Laquelle?
    Faut-il se la faire tout seul ...Comment relativement optimiser le code?

    RQ :
    _void unique() ne répond pas à la question
    _void remove_if(Predicate p); Je crois pas qu'on puisse faire avec un prédicat...!?
    _void remove(); ... et de l'huile de coude?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Tu peux très bien faire ça avec un prédicat oui.
    Après y'a la fonction membre splice...

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Tu crée un prédicat, tu lui files en variable membre une réfèrence vers ta seconde liste puis tu fais un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(seconde_liste.contient(element))
       return true;
    return false;

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Ce qui est en O(n^2) au fait.
    On peut aisément réduire ça si une des listes est modifiable ou si on peut utiliser de la mémoire.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    regardes les algo set_difference,set_intersection et set_union

    les predicats de base sont tes 2 listes triés et uniques
    dans le cas ou ta liste n'est pas unique faut réécrire l'algo

    http://www.sgi.com/tech/stl/set_intersection.html

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par loufoque
    Ce qui est en O(n^2) au fait.
    On peut aisément réduire ça si une des listes est modifiable ou si on peut utiliser de la mémoire.
    En pondant un algo de a à z n'importe qui peut y arriver, mais la question spécifiait une solution simple utilisant la stl.
    Sinon, quitte à tout faire soi même, c'est encore plus simple et rapide si on a deux listes triées (mais encore faut-il que la classe stockée le supporte).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    Merci pour toutes vos réponses.

    C'est finalement set_difference que j'utilise... sauf qu'il a fallu ruser : cette fonction nécessite des opérateurs de comparaison(<,>,=,...).

    RQ : cette méthode (et celle du même genre) nécessite un ostream_... en paramêtre, existe-t-il un moyen de faire que cette sortie supplémentaire soit inactivée? (STL_NULL ou un truc du genre)

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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