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 :

algorithmes de la STL différences entre copy et insert?


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut algorithmes de la STL différences entre copy et insert?
    Bonjour,

    Je ne saisis pas bien les différences entre les deux fonctions suivantes (à part le type de retour différent).

    void insert ( iterator p, InputIterator first, InputIterator last );
    et
    OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result );

    Quelqu'un peut-il m'expliquer (de manière pédagogique) la différence de comportement ?

    Cordialement,

  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
    Points : 4 625
    Points
    4 625
    Par défaut
    Déjà, insert n'est pas une fonction mais une fonction membre d'un conteneur.
    Comme son nom l'indique, ça insère tout simplement n'importe quelle séquence [first, last[ dans le conteneur avant l'élément désigné par l'itérateur p (qui doit être un itérateur du type du conteneur).

    copy, c'est une fonction libre qui copie n'importe quelle séquence [first, last[ dans n'importe quel itérateur de sortie.


    En effet, il est possible d'exprimer c.insert(p, s.begin(), s.end()) avec std::copy(s.begin(), s.end(), std:inserter<Value>(c, p));
    mais en fait l'itérateur de sortie ici utilisé va faire appel à c.insert(p, elem) pour chaque élément dans s.
    Boost ftw

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    insert te permet d'insérer des éléments, c'est à dire en rajouter de nouveau. En ce sens, si tu fais un insert de 4 éléments sur un conteneur vide, après il contient 4 éléments.

    copy te permet de copier des éléments. C'est à dire qu'il n'ajoute pas de nouveaux éléments mais fait une copie à la place d'un élément existant. Si tu fais une copie de 4 éléments sur un conteneur vide, ... il plante.

    Cette dernière remarque sur copy est à atténuer en fonction de l'output iterateur que tu fournis. Car comme le montre loufoque on peut utiliser un std:inserter qui va se comporter comme un 'output iterator' mais va en fait faire des insertions.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    avec un peu de retard: merci !
    C'est clair maintenant.

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

Discussions similaires

  1. Différences entre des algorithmes de classification
    Par javass dans le forum Méthodes prédictives
    Réponses: 2
    Dernier message: 06/09/2010, 22h54
  2. Différence entre Master STL et GL
    Par Sieldev dans le forum Etudes
    Réponses: 4
    Dernier message: 11/08/2007, 17h45
  3. la différence entre les algorithmes d'approximation et les algorithmes d'opptimisatio
    Par ch_hanen dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/06/2007, 10h52
  4. [Sauvegarde][Gbak]Différences entre copie et gbak ?
    Par exclusif dans le forum Administration
    Réponses: 3
    Dernier message: 13/04/2006, 00h55
  5. Algorithme de détection de différences entre arbres
    Par GrandFather dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/03/2006, 18h34

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