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 :

Comment copier un objet contenant un pointeur ?


Sujet :

C++

  1. #21
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Matthieu76 Voir le message
    Pour te répondre, je fais ce code constructeur ce qui me permet d’appeler la méthode suivante plusieurs fois de suite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void objet::train()
    {
        for(int i=0;i<tab.size(); ++i )
            tab[i] = 42;
    }
    Comme ça cela m'évite de faire un clear et un pushback à chaque appel de ma fonction.
    ET .... Rassures moi... Tu as fait un tab.resize(), quelque part avant d'entrer dans la boucle
    Car, si tu as laissé tab se construire par défaut, sa taille est de .... 0, ce qui fait que tu n'entre même pas dans la boucle, même en appelant cette fonction mille fois de suite
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #22
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Points : 890
    Points
    890
    Par défaut
    bah non, c'est ce que j'expliquais, je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<int> tab;
    for(int i=0;i<MAXSIZE; ++i )
        tab.push_back(0);
    Si je fais un resize, je peux directement écrire tab[i] = sans faire de push_back ?

  3. #23
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Matthieu76 Voir le message
    bah non, c'est ce que j'expliquais, je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<int> tab;
    for(int i=0;i<MAXSIZE; ++i )
        tab.push_back(0);
    Si je fais un resize, je peux directement écrire tab[i] = sans faire de push_back ?
    Lis la doc

    La fonction resize() fait potentiellement deux choses :
    • augmenter la capacité de std::vector de manière à ce qu'il soit en mesure de contenir le nombre d'éléments indiqué
    • rajoute autant d'éléments (construits par défaut) que la différence qui existe entre sa taille de départ et la taille indiquée.


    ou, si la taille indiquée est inférieure à la taille de départ,
    • supprimer un nombre d'éléments suffisant pour atteindre la taille indiquée (en commençant par les "derniers" éléments du tableau)

    !!! lors d'une diminution de taille, la capacité du tableau reste inchangée (tout comme elle le reste suite à l'appel de la fonction erase()). Il n'y a que l'information de taille et le pointeur sur "le dernier élément valide" qui soient mis à jour
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2013, 19h49
  2. Réponses: 3
    Dernier message: 31/10/2008, 14h17
  3. Réponses: 11
    Dernier message: 29/09/2008, 10h57
  4. [C#]Comment puis-je copier un objet ?
    Par lanuage dans le forum C#
    Réponses: 12
    Dernier message: 03/11/2006, 20h11
  5. Réponses: 4
    Dernier message: 27/10/2006, 17h03

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