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 des structures


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 42
    Points
    42
    Par défaut Manipulation des structures
    Salut tout le monde,

    Je suis débutante en c++.J'ai crée des structures mais je n'ai pas su comment les manipuler(accès,insertion,recherche, suppression..)Les structures sont les suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct position 
    {
    	int x;
    	int y;
    };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct element
    {
    	position pos;
    	int nb_attr;
    	int nb_obj;
    	std::map <int,int> vect;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    struct context
    {
    	std::map<int,int> element;
    };
    svp pourriez vous m'aider.Merci d'avance

  2. #2
    Membre averti Avatar de Dalini71
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 181
    Points : 343
    Points
    343
    Par défaut
    Salut,

    Déjà pour les noms de structures, on préférera des noms commençant par des majuscules (comme pour les classes).
    Alors pour reprendre tes exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    position maPosition;
    maPosition.x = maPosition.y = 50;
     
    element monElement;
    monElement.pos.x = 10;
     
    context monContext;
    // Pas top la variable ayant le même nom qu'une structure
    monContext.element.insert(make_pair(10, 5));
    Déjà de quoi potasser

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 42
    Points
    42
    Par défaut
    En fait,j'ai déclaré toutes ces structures pour insérer finalement dans la structure monContext et quand je procède ainsi je retrouve une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Position maPosition;
    	        maPosition.x=1;
    		maPosition.y=2;
    Element monElement;
    		monElement.pos.x=20;
    		monElement.pos.y=30;
    		monElement.nb_attr=0;
    		monElement.nb_obj=0;
    		monElement.Vect.insert(make_pair(10, 5));
                    Context monContext;
    		monContext.element.insert(make_pair(20, 15));
    ce code me ramène le code d'erreur suivant :error C2065: 'make_pair' : undeclared identifier

  4. #4
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    std::make_pair...
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  5. #5
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 42
    Points
    42
    Par défaut
    Merci pour les réponses.En fait quand j'ai vu de prés ce dont j'ai besoin,j'ai réalisé que je n'est pas besoin d'un map dans la structure Concept mais un vecteur de Element or quand je déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct Context
    {
    	std::Vector <Element> VectCont;
    };
    Le compilateur ne connait pas la structure Element puisque c'est moi qui l'a définit.Je fais quoi alors?

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Element n'est pas equivalent à element

  7. #7
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 42
    Points
    42
    Par défaut
    En fait j'ai changé le nom des structures par un majuscule au début.La déclaration finale est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct Position 
    {
    	int x;
    	int y;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct Element
    {
    	Position pos;
    	int nb_attr;
    	int nb_obj;
    	std::map <int,int> Vect;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    struct Context
    {
    	std::vector < struct Element > VectCont;
    };
    ça marche ainsi mais ce qu'il me reste c'est comment accéder aux éléments d'un Context:Je veux afficher son contenu
    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
     
    Position maPosition;
    	    maPosition.x=1;
    		maPosition.y=2;
    		Element monElement;
    		monElement.pos.x=20;
    		monElement.pos.y=30;
    		monElement.nb_attr=0;
    		monElement.nb_obj=0;
    		monElement.Vect.insert(std::make_pair(10, 5));
    		Context monContext;
    		monContext.VectCont.push_back(monElement);
    		printf("%d\n",maPosition.x);
    		printf("%d\n",maPosition.y);
    		printf("%d\n",monElement.pos.x);
    		printf("%d\n",monElement.pos.y);
    		printf("%d\n",monElement.nb_attr);
    		printf("%d\n",monElement.nb_obj);
    Jusqu'ici ça me ramène les résultats exacts mais quand je veux afficher le contenu du context :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%d\n",monContext.VectCont.get(0));
    error C2039: 'get' : is not a member of 'vector<struct Element,class std::allocator<struct Element> >'

  8. #8
    boli_971
    Invité(e)
    Par défaut
    Bonsoir,

    Utilise "at(N)" à la place de "get(N)".
    Pour l'affichage utilise du c++: std::cout, std::endl, std::flush.
    ici pour en savoir plus sur vector (et la S(T)L en général):http://www.cplusplus.com/reference/stl/vector/

Discussions similaires

  1. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 12h40
  2. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 12h46
  3. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 19h51
  4. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 23h43

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