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 :

Petites questions sur un pointeur vers vector


Sujet :

C++

  1. #1
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut Petites questions sur un pointeur vers vector
    Bonjour.

    J'aurai voulu avoir confirmation d'une petite chose.
    J'ai une fonction qui travaille sur un objet dérivé d'un vector (je prendrais un vector dans la suite pour faire plus simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void myFunction(std::vector *inputVector)
    {
        std::vector *myVector;
     
        if (inputVector) {
            myVector = inputVector;
        } else {
            myVector = new std::vector;
            myVector->insert(myVector->begin(), 5, 200); // For example
        }
     
        // DO SOMETHING WITH myVector
     
        if (!inputVector) {
            delete myVector;
        }
    }
    1) Est-ce que ce code est bon/sûr au niveau de la mémoire et de sa libération ?
    2) Est-ce qu'il y aurait une façon de protéger mon inputVector de toute modification dans la fonction si il est passé en paramètre (avec un const) ? (si il est passé il doit être non modifiable, si il n'est pas passé, myVector doit pointer vers un vector modifiable)
    3) Y aurait-il moyen de faire la même chose avec un vecteur passé par référence ?

    Merci beaucoup

  2. #2
    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
    Salut,
    Citation Envoyé par Kaluza Voir le message
    J'ai une fonction qui travaille sur un objet dérivé d'un vector
    std::vector n'est pas faite pour être héritée.

    Citation Envoyé par Kaluza Voir le message
    1) Est-ce que ce code est bon/sûr au niveau de la mémoire et de sa libération ?
    2) Est-ce qu'il y aurait une façon de protéger mon inputVector de toute modification dans la fonction si il est passé en paramètre (avec un const) ? (si il est passé il doit être non modifiable, si il n'est pas passé, myVector doit pointer vers un vector modifiable)
    3) Y aurait-il moyen de faire la même chose avec un vecteur passé par référence ?
    Allouer dynamiquement un std::vector n'a pas beaucoup de sens.

    Un pointeur nu est toujours fragile notamment si le traitement peut générer une exception => pointeur intelligent (std::unique_ptr si C++11 ou TR1 ou un de ceux de boost)

    Cependant, pour répondre à ta question, il suffit de séparer la fonction en 2 chacune avec son contrat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void myFunction(std::vector *inputVector)
    {
        if (inputVector) {
            do_myFunction(*inputVector);
        } else {
            std::unique_ptr<std::vector> myVector(new std::vector);
            do_myFunction(*myVector);
        }
    }
    void do_myFunction(std::vector &inputVector)
    // ou void do_myFunction(std::vector const &inputVector) si pas de modification du contenu
    {
     // ...
    }
    besoin d'un Boost.Optional ?

Discussions similaires

  1. petite question sur les pointeurs
    Par Krisprolls31 dans le forum C
    Réponses: 4
    Dernier message: 20/08/2010, 22h19
  2. Réponses: 15
    Dernier message: 25/10/2009, 22h02
  3. une petite question sur les pointeurs
    Par guy777 dans le forum C
    Réponses: 4
    Dernier message: 06/10/2006, 17h44
  4. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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