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++/CLI Discussion :

[C++ managé] Comment implémenter un Tableau associatif (map) ?


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 25
    Points : 15
    Points
    15
    Par défaut [C++ managé] Comment implémenter un Tableau associatif (map) ?
    Salut tout le monde
    Je désirerais utiliser un tableau associatif (clé,valeur) dans du code managé. Le problème, c'est que j'ai bien trouvé System::Collections::ArrayList, mais pas de map dans Collections... Si j'utilise std::map, je ne peux pas y ranger mon objet managé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<const char*, MonObjet*> test;
    ma rend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    error C3265: impossible de déclarer 'second' managé dans
     'std::pair<_Ty1,_Ty2>' non managé
            with
            [
                _Ty1=const char *const ,
                _Ty2=MonObjet __gc *
            ]
    Je ne doit pas être le premier à vouloir faire ce genre de truc en c++ managé mais je n'ai rien trouvé sur le net. Quelqu'un sait comment s'y prendre ?

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    L'équivalent le plus proche de std::map en managé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    generic<typename TKey, typename TValue>
    public ref class SortedDictionary
    L'utilisation de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    generic<typename TKey, typename TValue>
    public ref class Dictionary
    Est une alternative à considérer (table de hash).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Merci bien.
    Sinon, vu que j'avais laissé tomber l'idée d'utiliser une map, j'ai décidé de me rabattre sur le System::Collections::SortedList et là, oh surprise, y'a des key et des value, en gros ça doit être géré comme une map... Des heures de recherche pour rien

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Attention : System::Collections::SortedList est une classe non générique, et j'en déconseille donc l'utilisation.

    System::Collections::Generic::SortedList existe aussi, mais n'offre pas les contraintes de complexités d'une std::map, plus celles d'un std::vector que l'on maintiendrait trié. En particulier, l'insertion non ordonnée est en O(n), au lieu de O(log n). En terme de complexité opératoire, System::Collections::Generic::SortedDictonnary est ce qui s'approche le plus de std::map.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Merci pour l'info. Je vais me renseigner sur ces classes génériques. Je suis nouveau en .NET

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

Discussions similaires

  1. tableau associatif (map)
    Par phenix7598 dans le forum C
    Réponses: 7
    Dernier message: 08/12/2014, 13h20
  2. [Web Service] SOAP : comment récupérer un tableau associatif
    Par het44 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 22/08/2014, 09h58
  3. comment faire un tableau associatif
    Par sebac dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/08/2010, 09h40
  4. Tableau associatif map.
    Par C_R dans le forum C++
    Réponses: 25
    Dernier message: 23/06/2005, 16h11

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