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 :

map et algorithm copy


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut map et algorithm copy
    je voudrais utiliser l algorithme de la bibliotheque standard de c++ pour copier les elements d une map M dans une autre map N

    sachant que la syntaxe de cet algorithm est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    template <class InputIterator, class OutputIterator>
      OutputIterator copy ( InputIterator first, InputIterator last,
      OutputIterator result );
    j ai bien essayé mais je n arrive pas a le faire sachant que M et N sont deux map de type map<int,string>

    j ai essayé la commande copy ( m.begin(),m.end(),n.begin() ); mais ca marche pas

  2. #2
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si tu veux remplacer tous les éléments, l'opérateur d'affectation suffira.
    Si tu veux ajouter les éléments, il faut utiliser la fonction membre insert qui prend une paire d'itérateurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m.insert(n.begin(), n.end());

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    oui,je sais que je peut utiliser ces methodes , mais je suis obligé de utiliser cet algorithm copy mais par une autre methode

  4. #4
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pourquoi es-tu obligé d'utiliser std::copy ?

    Ca devrait donner un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy(m.begin(), m.end(), std::inserter(n));

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Points : 145
    Points
    145
    Par défaut
    Salut ,

    tu dois utiliser un iterator qui "insert" dans ton conteneur.
    en general j'utilise le back_inserter sur des listes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    copy (l.begin(),l.end(),back_inserter(l2));
    mais l'insertion en back sur une map a pas trop de sens.
    si ca marche pas avec back_inserter regardes :insert_iterator<Container>


    Cdt.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Laurent Gomila
    Pourquoi es-tu obligé d'utiliser std::copy ?

    Ca devrait donner un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy(m.begin(), m.end(), std::inserter(n));

    ca me donne l erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    42 D:\CPPfiles\AlgorithmMAP\ex_copy_map.cpp no matching function for call to `inserter(mymap&)'
    la raison pour laquelle je suis obligé de utiliset l algorithm copy,c est tout simplement que c est le prof qui nous la demander

  7. #7
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    N'oublie pas d'inclure <iterator>. Ensuite il faut passer en paramètre l'endroit d'insertion (faut lire la doc des fois) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy(m.begin(), m.end(), std::inserter(n, m.end()));
    la raison pour laquelle je suis obligé de utiliset l algorithm copy,c est tout simplement que c est le prof qui nous la demander
    C'est ridicule, car personne n'utilisera jamais std::copy avec std::map. Les équivalents en fonction membres sont toujours à préférer lorsqu'ils existent. Au pire ils sont plus performants, au mieux ce sont les seuls qui marchent.

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

Discussions similaires

  1. Algorithme de copie de fichier
    Par 0v3rb1t dans le forum C
    Réponses: 7
    Dernier message: 01/05/2007, 18h40
  2. algorithm et map
    Par ocean24 dans le forum C++
    Réponses: 8
    Dernier message: 24/04/2007, 08h47
  3. Réponses: 5
    Dernier message: 04/04/2007, 09h34
  4. Réponses: 46
    Dernier message: 14/03/2007, 17h47
  5. aide : recherche algorithme mapping
    Par nagty dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 30/12/2005, 14h19

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