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

MFC Discussion :

Equivalent des Java Hashmap en Visual c++


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Par défaut Equivalent des Java Hashmap en Visual c++
    Bonjour tout le monde,

    J'ai déjà poster la question dans le sous-forum c++, et la réponse fut d'utiliser les map.

    Le problème est que je ne peux pas utiliser les String^ (managés?) avec le std::map.

    alors me revoilà avec la même question lol :

    Je voulais savoir s'il y avait un équivalent en Visual C++ aux HashMaps présents dans Java.

    En effet je cherche une structure gérant des noms afin de faire une sorte de :

    xxxx^ tab;
    tab.put("nom_auteur","Nom auteur");

    .....
    afin d'obtenir "Nom auteur" à la suite d'un :
    tab.get("nom_auteur");


    Je pense que ça existe en 'préfait' dans les classes de Visual c++, non?



    voilà, merci pour vos futures réponses, et désolé pour ceux qui se retrouvent à lire quasiment 2 fois le même message

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu veux faire une vrai hashtable ? (un objet ou plus rataché à une clé)
    ou simplement une table de correspondance ? (un objet et un seul rataché à une clé)

  3. #3
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Sous MFC tu as la classe CMap, sous ATL tu as la classe CAtlMap

  4. #4
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Pour les chaines tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // sous MFC
    CMap<CString, CString, CString, CString> tab;
    tab.SetAt("nom_auteur","Nom auteur");
    
    .....
    // afin d'obtenir "Nom auteur" à la suite d'un :
    CString rValue;
    tab.Lookup("nom_auteur", rValue);
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // sous ATL
    CAtlMap<CString, CString> tab;
    tab.SetAt("nom_auteur","Nom auteur");
    
    .....
    // afin d'obtenir "Nom auteur" à la suite d'un :
    CString rValue;
    tab.Lookup("nom_auteur", rValue);

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Si tu avais regardé, il parle de chaine managée
    donc, il va se retrouver dans la meme galère, il ne pourra pas utiliser des String ^ dans un CMap.

    D'où ma question sur ce qu'il veut faire, le framework .Net dispose de plein de classes adaptées

  6. #6
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Voilà une classe .NET
    System::Collections::Specialized::StringCollection

  7. #7
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Mais la clé utilisé est un int et non une string de cette System::Collections::Specialized::StringCollection.
    Contrairement aux classes natives CMap et CAtlMap.
    Je te renvoie la balle pour les classes managées.

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    j'attends plus de précisions

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Par défaut
    Alors en fait je souhaite juste faire une table de correspondance
    (à un String^ donne un autre ^String)

    Une solution??

    merci d'avance

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Le plus simple à mon avis est d'utiliser une SortedList

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        System::Collections::SortedList ^tableCorrespondance = gcnew System::Collections::SortedList();
        tableCorrespondance->Add("clé 1", "Valeur 1");
        tableCorrespondance->Add("clé 2", "Valeur 2");
        tableCorrespondance->Add("clé 3", "Valeur 3");
     
        Console::WriteLine(tableCorrespondance->GetByIndex(tableCorrespondance->IndexOfKey("clé 2")));

  11. #11
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Voir Hashtable aussi, ainsi que Dictionary qui comme SortedList est dispo en generic.

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

Discussions similaires

  1. Equivalents des Templates de C++ en Java
    Par ToTo13 dans le forum Général Java
    Réponses: 5
    Dernier message: 13/05/2011, 01h35
  2. Equivalent des préprocesseurs du C en Java
    Par ZouBi dans le forum Général Java
    Réponses: 12
    Dernier message: 29/03/2011, 15h46
  3. Equivalent des Java Hashmap en c++
    Par Sallie dans le forum C++
    Réponses: 4
    Dernier message: 11/05/2006, 17h58
  4. [C#] Equivalence des API java en C# en ligne
    Par totoranky dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/02/2005, 01h16
  5. [JNDI] Equivalent avec Java Web Start ?
    Par cameleon2002 dans le forum Java EE
    Réponses: 8
    Dernier message: 18/09/2003, 18h55

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