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 :

map contenant un tableau


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Points : 27
    Points
    27
    Par défaut map contenant un tableau
    Je voudrais faire une map qui associe un pointeur sur un objet de classe agent et ses coordonnées (2 entiers pour commencer), j'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map<Agent*, int[1]> agentList;
    et un appel du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    agentCoord[agent][0]+=deltaX;
    mais Oh rage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    1>c:\program files\microsoft visual studio 8\vc\include\map(172) : error C2440: '<function-style-cast>' : cannot convert from 'int' to 'int [1]'
    1>        There are no conversions to array types, although there are conversions to references or pointers to arrays
    1>        c:\program files\microsoft visual studio 8\vc\include\map(167) : while compiling class template member function 'int (&std::map<_Kty,_Ty>::operator [](Agent *const &))[1]'
    1>        with
    1>        [
    1>            _Kty=Agent *,
    1>            _Ty=int [1]
    1>        ]
    1>        c:\2005\1\sma\staticgridenv.h(43) : see reference to class template instantiation 'std::map<_Kty,_Ty>' being compiled
    1>        with
    1>        [
    1>            _Kty=Agent *,
    1>            _Ty=int [1]
    1>        ]
    Ou est ce que cela coince?


    Question bonux, j'ai pas mal de fonction qui ont besoin de la référence sur l'objet appelant, y aurait il un équivalent à "this" pour cela?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    En passant par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct _coord {
       int x;
       int y;
       ...
    }
     
    map<Agent*, _coord> agentList;
    Ca ne marcherait pas mieux ?

    Quant au :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    agentCoord[agent][0]+=deltaX;
    C'est quoi le type de deltaX ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Si c'est plus propre mais bon, je pensais que c'était faisable.
    deltaX est un int.

    Ta technique marche mais je me demande si le fait de passer par une structure n'est pas moins performant? Etant donné que ce bout de code sera appelé tres tres souvent.

  4. #4
    Fry
    Fry est déconnecté
    Membre régulier Avatar de Fry
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 150
    Points : 119
    Points
    119
    Par défaut
    Si je me trompe pas une map est un tableau associatif et pas un tableau a 2 dimension d 'ou l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      agentCoord[agent][0]+=deltaX;
     
      agentCoord[agent] = 0 + deltaX;

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Fry : Relis le titre du sujet.

    PS grodwar : int[1], c'est un tableau d'un seul entier. (numéroté de 0 à 0).
    Pour deux entiers numérotés de 0 à 1, il te faut un int[2].
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Euh oui médinoc ^^......mais j'ai toujours le même problème :/

  7. #7
    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 : 39
    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
    Tu ne peux pas stocker un tel tableau dans un conteneur standard, car il n'est pas copiable. Une structure par contre le sera. Et il n'y aura aucune perte de performance.

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Les tableaux ne sont pas copiables, tu ne peux donc pas les mettre dans les conteneurs standard.
    Tu peux néanmoins utiliser boost::array ou std::tr1::array.
    Boost ftw

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Accesoirement, tu pourrais avoir des surprises à utiliser un pointeur comme clé.
    => N'oublie pas de définir un foncteur de comparaison. FAQ!
    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...

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2009, 09h57
  2. Image Map (cliquable) avec fichier .map contenant les coordonnées
    Par minogttao dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 08/08/2007, 21h59
  3. Réponses: 5
    Dernier message: 19/07/2007, 13h06
  4. [AJAX] Génération de menu déroulant contenant une tableau php
    Par emageren dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/04/2007, 11h46
  5. Réponses: 2
    Dernier message: 30/11/2006, 09h32

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