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 :

[debutant STL] question sur les vectors


Sujet :

SL & STL C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut [debutant STL] question sur les vectors
    Bonjour, j'aimerai faire un tableau de tableau de 3 entiers. donc j'aimerai savoir si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<int[3]> tableau;
    est quelques chose de correcte ou si ca ne l'est pas.

    Car pour l'instant,dans le programme sur lequel je travaille, le code pour ce type de tableau est ce qui entraine des allocation memoire dans tous les sens et j'aimerai l'eviter .

    merci d'avance pour votre aide a tous et pour vous

  2. #2
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    dans la mesure ou vous connaissez à l'avance le nb d'élements du
    tableau, le + simple est le tableau statique

    int tableau[3];

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    non en fait j'ai besoin d'un tableau de tableau. Et c'est les tableaux internes qui contiennent 3 entiers.

    que cela donne quelquechose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::vector<int[3]> tableau;
    tableau[i] du type int[3];
    J'espere que j'arrive a expliqué ce que j'essai de programmer

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne sais pas si c'est une bonne idée, ça peut poser problème lorsque tu vas manipuler ton tableau par la suite.

    Tu peux essayer un vector<vector<int> > en ajoutant toujours des éléments de taille 3, ou bien tu peux remplacer ton int[3] par une structure contenant 3 int.

  5. #5
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    je n'avais pas vu tableau de tableau

    la solution 2 de Loulou24 pourrait donner
    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
    18
    19
    20
     
    #include <vector>
    #include <iostream>
    using namespace std;
    struct T3INT{
        int ent1;
        int ent2;
        int ent3;
    };
    T3INT t3;
    vector<T3INT>tableau;
    int main () {
        t3.ent1 = 1;
        t3.ent2 = 2;
        t3.ent3 = 3;
        tableau.push_back(t3);
        cout << tableau[0].ent2;
        cin.ignore();
         return 0;
    }

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Avec un bon constructeur c'est encore mieux :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    struct MyStruct
    {
       MyStruct(int i0 = 0, int i1 = 0, int i2 = 0)
       {
          Tab[0] = i0;
          Tab[1] = i1;
          Tab[2] = i2;
       }
     
       int Tab[3];
    };
     
    int main()
    {
       vector<MyStruct> v;
       v.push_back(MyStruct(1, 2, 3));
       v.push_back(MyStruct(24, 52, 84));
     
       return 0;
    }

  7. #7
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    Loulou24, j'ignorais cette syntaxe. j'ai vu que cela marche.
    J'achète.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Desole pour avoir tarder à repondre à ce sujet que j'ai posté mais j'ai du travailler sur autres chose en urgence (vives les stagiaires )

    Je suis en train d'essayer ta methode Loulou24 j'aimerai savoir comment accéder directement a une case de MyStruct. Je dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    vector<MyStruct> v;
       v.push_back(MyStruct(1, 2, 3));
       v.push_back(MyStruct(24, 52, 84));
    .......
     
    int i = v[0].Tab[0]  //pour que i = 1
    J'aimerai savoir si mon idée est bonne, ou si je suis entrain de dire une connerie.

    Merci bcp pour l'aide que vous m'avez deja apporté et merci d'avance pour les réponses

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est bien ça oui

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    et pour effacer je fais comment ?

    pour effacer le vector, mais pour detruire Tab je fais comment ???

  11. #11
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne suis pas sûr de comprendre ce que tu veux dire par "détruire Tab". Pour supprimer un élément dans un vector c'est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::vector<MyStruct>::iterator It = ...;
    v.erase(It);

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Je veux dire pour détruire tout mon vector au moment de la fermeture du programme.
    Est-ce que v.clear() nettoira toute la memoire correctement ?

    Car j'ai déja des fuites de mémoires du à mes prédécesseur donc je ne voudrait pas en rajouter.

  13. #13
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 013
    Points
    11 013
    Par défaut
    Le destructeur s'occupe de tout (appeler clear()) tant que tu stockes des objets et non des pointeurs.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    MERCI A TOUS !!!!!

    grace a vos reponses ca a l'air de marcher (du moins ca à pas planter pour l'instant) et mainentant grâce à mes structures vector je fais pouvoir enlever des éléments du tableau sans m'embeter.



    [RESOLU]

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

Discussions similaires

  1. [STL] Question sur les MAP
    Par Goldstein00 dans le forum Langage
    Réponses: 1
    Dernier message: 22/05/2011, 13h49
  2. Question sur les Vector
    Par lazins dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 03/10/2008, 09h07
  3. Question sur les vectors
    Par Pragmateek dans le forum SL & STL
    Réponses: 28
    Dernier message: 13/05/2006, 14h55
  4. [Debutant] Nouvelle question sur les pointeurs
    Par etiennegaloup dans le forum Débuter
    Réponses: 3
    Dernier message: 11/01/2006, 09h55
  5. [debutant] Question sur les données.
    Par Norabfr dans le forum Débuter
    Réponses: 4
    Dernier message: 03/01/2006, 13h47

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