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 :

Manipulation de vecteur de structure


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut Manipulation de vecteur de structure
    Bonjour tout le monde,

    J'utilise un vecteur de structure mais je n'est pas su comment le manipuler.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct PseudoConcept
    {
     vector<int> intent;
     vector<int> extent;
    };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    struct InfoContext
    {
    PseudoConcept couple;
    PseudoConcept pseudo;
    vector <int> concept;
    int num_concept;
     
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef vector<InfoContext*> ContextVect;
    Je déclare une variable "ContextGlobal" de type ContextVect, mais je n'arrive pas a accéder à aucuna case du vecteur.Par exemple je veux initialiser les tailles de tous les couples a 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(z=0;z<ContextGlobal.size();z++)
    {
    ContextGlobal[z].couple.intent.size()=1;
    ContextGlobal[z].couple.extent.size()=1;
    }
    9a me ramène des erreurs du genre :

    "error C2228: left of '.couple' must have class/struct/union type" ....

    Je n'arrive même pas à afficher le contenu de cette structure ni la manipuler correctement.Merci d'avance

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    A la place de l'opérateur "." il faut utiliser l'opérateur "->" car les éléments du vecteur sont des pointeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ContextGlobal[z]->couple.intent.size()

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Merci pour la réponse mais quand j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ContextGlobal[z]->couple.intent.size()=1;
    ça me ramène une autre erreur:
    error C2106: '=' : left operand must be l-value
    Pourriez vous m'indiquer la cause de cette erreur??

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ContextGlobal[z]->couple.intent.size()=1;
    c'est comme si tu écrivais et cela n'a pas de sens.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Par défaut
    Citation Envoyé par FstDsi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ContextGlobal[z]->couple.intent.size()=1;
    Je ne vois pas trop ce que tu veux faire avec cette ligne. Si c'est pour définir la taille du vecteur, tu ne peux pas faire comme ça.

    Plus un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ContextGlobal[z]->couple.intent.resize(1);

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Merci bcp.

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    c'est comme si tu écrivais et cela n'a pas de sens.
    Ca peut en avoir, tout dépend de la sémantique du retour de la fonction, qui peut être un retour par référence :

    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
    #include <iostream>
     
    using namespace std;
     
    int& f()
    {
    	static int n = 0;
    	return n;
    }
     
    int main(void)
    {
    	cout << f() << endl;
    	cout << (f() = 1) << endl;
    }

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par seriousme Voir le message
    Ca peut en avoir, tout dépend de la sémantique du retour de la fonction, qui peut être un retour par référence :
    C'est vrai, cela peut en avoir, je reconnais
    (même si on est dans le sous forum Débuter ).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Svp j'ai un petit soucis de débordement de mémoire et je n'arrive pas à localiser la source.Apparemment je fais un clear() qui est mal placé.J'ai essayé de supprimer les clear() mais j'ai toujours le mm problème.



    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    ContextVect ContextGlobal;
    InfoContext ContextElement;
    PseudoConcept p,c;
    vector<int> cc;
     
    ContextGlobal.reserve(couverture);
     
    for(int n=0;n<ct.ind_attr.size();n++)
    {
     
     c.intent.clear();
     c.extent.clear();
     p.intent.clear();
     p.extent.clear();
     ContextElement.couple.intent.clear();
     ContextElement.couple.extent.clear();
     ContextElement.pseudo.intent.clear();
     ContextElement.pseudo.extent.clear();
     ContextElement.concept.clear();
     
     ContextGlobal[n]->couple.intent.clear();
     ContextGlobal[n]->couple.extent.clear();
     ContextGlobal[n]->pseudo.intent.clear();
     ContextGlobal[n]->pseudo.extent.clear();
     ContextGlobal[n]->concept.clear();
     
     
     c.intent.resize(1);
     c.extent.resize(1);
     c.intent.push_back(exp_courant);
     c.extent.push_back(attr_courant); 
     ContextElement.couple=c;
    	for (int q=0;q<20;q++)
    	{
           p.intent.push_back(1);
           p.extent.push_back(0);   
    	ContextElement.pseudo=p;
    	cc=resultat;// resultat est un vecteur de int déjà rempli
    	ContextElement.concept=cc;
    	ContextElement.num_concept=1;
    	ContextGlobal[n]->couple=ContextElement.couple;
    	ContextGlobal[n]->pseudo=ContextElement.pseudo;
    	ContextGlobal[n]->concept=ContextElement.concept;
    	ContextGlobal[n]->num_concept=ContextElement.num_concept;
     
     
     
     
    }

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Il manque une accolade fermante ... mais je pense qu'elle y est dans le programme.

    Pourquoi faire la première boucle for ( la première je parle ) par rapport à "<ct.ind_attr.size()"
    et non à "ContextGlobal.size"
    Vu que le conteur est pour ContectGlobal...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Créer une matrice en manipulant un vecteur
    Par bernard6 dans le forum MATLAB
    Réponses: 3
    Dernier message: 07/04/2007, 11h34
  2. Réponses: 2
    Dernier message: 04/04/2007, 10h34
  3. Réponses: 60
    Dernier message: 13/02/2007, 19h53
  4. vecteur de structure
    Par dimahoo dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2006, 04h37
  5. [MFC] Manipuler un vecteur d'objets
    Par Yellowmat dans le forum MFC
    Réponses: 4
    Dernier message: 13/07/2005, 14h37

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