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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Points : 25
    Points
    25
    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
    Points : 16 075
    Points
    16 075
    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 éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Sous MFC tu as la classe CMap, sous ATL tu as la classe CAtlMap

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    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
    Points : 16 075
    Points
    16 075
    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 éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Voilà une classe .NET
    System::Collections::Specialized::StringCollection

  7. #7
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    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
    Points : 16 075
    Points
    16 075
    Par défaut
    j'attends plus de précisions

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Points : 25
    Points
    25
    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
    Points : 16 075
    Points
    16 075
    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 éminent sénior

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 667
    Points
    10 667
    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