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 :

Probleme bibliotheque STL


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Par défaut Probleme bibliotheque STL
    Bonjour,
    J'essuie actuellement de lourds problèmes de compilation.
    Le programme en question est composé de:

    une classe a,
    une classe b contenant une list<class a>
    une classe c contenant une list<class b>
    une classe d contenant un vector<class c>

    Le problème auquel je suis arrivé et que je n'arrive pas a débugger me pointe une erreur dans la bibliothèque STL :
    C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_vector.h|182|error: expected primary-expression before ':' token|
    Pour l'instant je n'ai créé que mes classes et n'ai instancié aucun vector<class c>

    aussi, d'après ce que j'ai compris, il vaut mieux utiliser un vector<class c*> car la classe vector alloue une mémoire fixe au début et quand on veut y ajouter des élements, ce n'est plus possible. Est-ce vrai?

    Merci pour vos réponses

  2. #2
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Citation Envoyé par hurkslop Voir le message
    aussi, d'après ce que j'ai compris, il vaut mieux utiliser un vector<class c*> car la classe vector alloue une mémoire fixe au début et quand on veut y ajouter des élements, ce n'est plus possible. Est-ce vrai?
    Merci pour vos réponses
    Je pense qu'on peut toujours faire un push_back() pour ajouter un élément dans un vecteur, je cite
    Vectors are good at:

    * Accessing individual elements by their position index (constant time).
    * Iterating over the elements in any order (linear time).
    * Add and remove elements from its end (constant amortized time).

  3. #3
    Membre éprouvé
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Par défaut
    Citation Envoyé par hurkslop Voir le message
    aussi, d'après ce que j'ai compris, il vaut mieux utiliser un vector<class c*> car la classe vector alloue une mémoire fixe au début et quand on veut y ajouter des élements, ce n'est plus possible. Est-ce vrai?
    Non. Le but justement des vectors c'est de pouvoir changer la taille du tableau. ( Et changer le type de c à c* ne changerait rien. )

    Je te conseille de jeter un coup d'œil à un tutoriel ou un bonne doc sur le sujet.

    PS : et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<class c> tab;

  4. #4
    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
    Salut,
    Citation Envoyé par hurkslop Voir le message
    Le problème auquel je suis arrivé et que je n'arrive pas a débugger me pointe une erreur dans la bibliothèque STL :
    C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_vector.h|182|error: expected primary-expression before ':' token|
    Souvent, cette erreur apparait quand on utilise une classe non déclarée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class c;
    class d
    {
    std::vector<c> // erreur
    };
    Tu as besoin du type en entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include "c.h"
    class d
    {
    std::vector<c> // OK
    };
    Mais en l'absence de code, ceci ne peut être que supposition...
    Citation Envoyé par hurkslop Voir le message
    aussi, d'après ce que j'ai compris, il vaut mieux utiliser un vector<class c*>
    Non

    Citation Envoyé par hurkslop Voir le message
    car la classe vector alloue une mémoire fixe au début et quand on veut y ajouter des élements, ce n'est plus possible. Est-ce vrai?
    Non.
    std::vector modélise la notion de tableau [] du C en C++. Il y a certes une zone mémoire réservée pour stocker les éléments, mais celle ci peut être retaillé selon les besoins. Ainsi, l'ajout d'un nouvel élément est toujours possible mais peut être couteux si le tableau doit être agrandi. Si tu connais à l'avance le nombre d'éléments que va contenir ton vecteur, tu as intérêt à utiliser std::vector::reserve pour 'réserver' dès le début la taille du tableau (attention, reserve ne crée pas d'élément : après un appel à reserve, size() renvoi toujours 0).
    Si de nombreux ajouts/suppressions sont nécessaires, alors std::vector n'est peut être pas le type approprié. Tu peux te baser sur cette entrée de la FAQ pour choisir son conteneur.

Discussions similaires

  1. Compilation de la Bibliotheque stl
    Par DanParad dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 24/08/2013, 16h13
  2. probleme conteneur <list> de la bibliotheque STL
    Par khaledmoez dans le forum C++
    Réponses: 2
    Dernier message: 06/12/2009, 18h48
  3. Probleme avec STL et templates.
    Par nospam dans le forum SL & STL
    Réponses: 1
    Dernier message: 16/05/2008, 18h20
  4. problem avec STL
    Par lachose dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 03/04/2007, 18h12
  5. probleme bibliotheque access
    Par yohannmonnier dans le forum Access
    Réponses: 3
    Dernier message: 04/06/2006, 23h33

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