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 :

Petite question sur les vecteurs


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 52
    Points
    52
    Par défaut Petite question sur les vecteurs
    Bonjour,
    je me posais une question a propos des vecteurs et les différents types&combinaison possible.
    std::vector<Objet*> instance;==>si je comprend bien ici, instance contiendra des adresses de la classe objet.
    std::vector<Objet*>& instance;==>la je comprend pas trop la difference avec le precedent.
    std::vector<Objet>& instance;==> instance contiendra des references de la classe Objet...
    Je dois avouer que je ne suis pas trop sur, si quelqu'un pouvait eclairer ma lanterne
    Merci d'avance

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Tu dois simpelement faire la différence de ce qui se trouve entre < et > et ce qui se trouve après...

    Les conteneurs de la STL sont des classes templates, c'est à dire que le compilateur déterminera à la compilation le type d'élément que la collection contient, dont (entre autres) l'espace qui sera utilisé par chaque élément en mémoire.

    Ainsi, lorsque tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::une_collection<Type *> collection;
    (il peut s'agir de std::vector, std::set, std::list ou n'importe quoi d'autre ), tu déclare une collection de pointeur sur des objets de type Type, c'est à dire des adresse auxquelles on trouvera effectivement l'objet du type indiqué.

    De même, lorsque tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::une_collection<Type> collection;
    (il peut encore une fois s'agir de n'importe quelle collection fournie par la STL ), tu déclare une collection d'objets "classiques"

    Par contre, lorsque tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::une_collection<Type*> & col;
    /* OU OU OU */
    std::une_collection<Type> & col;
    tu déclares une référence sur une collection de pointeurs sur le type indqué (respectivement : une référence sur une collection d'objet du type indiqué).

    Un référence (sur quoi que ce soit) agit, simplement, comme un alias de l'objet référencé.

    L'énorme avantage que l'on en retire est, entre autre, le fait qu'il n'y a pas copie de l'objet référencé.

    Si l'on allait creuser jusque dans le code binaire exécutable générer, on pourrait d'ailleurs sans doute remarquer qu'à ce niveau là, il ne s'agit que d'un pointeur sur le dit objet, mais le problème n'est pas vraiment là

    Ce qui importe, c'est qu'une référence offre une garantie de non nullité (contrairement aux pointeurs), c'est à dire qu'il faut bel et bien que l'objet existe.

    Si la référence est non constante, toutes les modifications que nous pourrions leur appliquer seraient automatiquement répercutées sur l'objet l'objet d'origine

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoup pour vos explications, je comprend beaucoup mieux maintenant

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

Discussions similaires

  1. Petite question sur les conventions de nommage en Java
    Par implosion dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2006, 15h54
  2. Petites question sur les onglets...
    Par jarod_bx dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 18h45
  3. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  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