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 :

Pointeur sur un vecteur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Attrox
    Profil pro
    Concepteur
    Inscrit en
    Mars 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Concepteur

    Informations forums :
    Inscription : Mars 2009
    Messages : 119
    Par défaut Pointeur sur un vecteur
    Bonjours je voudrai si il est possible en c++ de faire un pointeur sur un vecteur et non vecteur de pointeur Merci.

  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
    Par défaut
    Si cela a un sens, oui. Mais quel est ton problème exactement ?

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Il est, effectivement, possible de déclarer (et d'instancier) un pointeur sur vecteur, mais, en toute honnêteté, ce n'est clairement pas recommandé.

    D'abord parce que tu va te retrouver face à la problématique de gestion des pointeurs, ensuite parce que la classe vector s'accomode parfaitement de l'utilisation de références, enfin parce que tu dispose de la fonction membre empty() qui te permet de déterminer si le vecteur contient des éléments ou non... Sans oublier qu'il n'est généralement pas intéressant de faire dériver une classe perso des différentes classes de la S(T)L.

    Bref, tu peux envisager de travailler avec un pointeur sur vecteur, mais, c'est comme de te tirer une balle dans le coude: tu peux le faire, mais est-ce que cela en vaut la peine
    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

  4. #4
    Membre confirmé Avatar de Attrox
    Profil pro
    Concepteur
    Inscrit en
    Mars 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Concepteur

    Informations forums :
    Inscription : Mars 2009
    Messages : 119
    Par défaut
    Merci beaucoup pour toutes vos réponses et vos explications.

    Citation Envoyé par koala01 Voir le message
    mais est-ce que cela en vaut la peine ?
    Citation Envoyé par 3DArchi Voir le message
    Si cela a un sens, oui. Mais quel est ton problème exactement ?
    En fait c'était pour faire une fonction qui renvoi un vecteur enfin un QVector plus précisement.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Attrox Voir le message
    Merci beaucoup pour toutes vos réponses et vos explications.



    En fait c'était pour faire une fonction qui renvoi un vecteur enfin un QVector plus précisement.
    Peut être devrais tu alors changer ton fusil d'épaule et t'orienter vers une fonction prenant en paramètre... une référence (non constante) sur un vecteur

    Car, de toute évidence, ce sera l'objet qui appelle la fonction qui sera responsable de la gestion de la durée de vie de ton vecteur... Autant qu'il en soit responsable jusqu'au bout (de la création à la destruction )
    [EDIT] cela pourrait prendre une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void fill(std::vector<type>& tab)
    {
        /* éventuellement vider le tableau avant */
        tab.clear();
        /* tout ce qu'il faut pour le remplir à nouveau */
    }
    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

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    En fait, il faut surtout voir si le vecteur est une variable "libre" (manipulée pour l'occasion par la fonction) ou s'il s'agit d'un membre de classe...

    En effet, s'il s'agit d'un membre de classe, il rentre de plein pied dans la catégorie des "détails d'implémentation", et il semblerait fortement opportun de plutot présenter les fonctions permettant d'obtenir un itérateur sur le premier élément et un autre sur la fin du vecteur, sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MyClass
    {
        typedef std::vector<int> internalTab;
        public:
           typedef internalTab::iterator iterator;
           typedef internalTab::const_iterator const_iterator;
           iterator begin(){return tab.begin();}
           iterator end(){return tab.end();}
           const_iterator begin() const{return tab.begin();}
           const_iterator end() const{return tab.end();}
        private:
            internalTab tab;
    };
    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

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/03/2011, 09h19
  2. Réponses: 21
    Dernier message: 03/06/2010, 18h26
  3. [allegro]passage de pointeur sur image
    Par Gonath dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/12/2003, 18h47
  4. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37
  5. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40

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