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 :

trouver les types d'un unordered_map


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Par défaut trouver les types d'un unordered_map
    bonjour à tous,
    je cherche un moyen de récupérer les types de la clé et de la valeur associée d'un unordered_map. par exemple:

    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
    19
    20
    21
    22
    23
    #include <iostream>
    #include <string>
    #include <unordered_map>
     
    int main()
    {
     
        std::unordered_map<type 1, type 2> foo
        {
           { clé1, valeur1 },
           { clé2, valeur2 }
            [etc..]
        };
     
    //si je veux créer une boucle for qui accepte d'autres unordered_map avec des types différents j'aurais tendance à essayer quelque chose dans ce genre la:
     
        for (std::pair<decltype(qu'est-ce que je met la?), decltype( et la?)> paire : foo)
        {
            std::cout << paire.first << std::endl << paire.second;
        }
     
        return 0;
    }
    du coup est-ce que c'est possible, et si oui comment?
    merci d'avance!

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Par défaut
    du coup j'ai trouvé un moyen:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    std::unordered_map<type 1, type 2> foo
        {
           { clé1, valeur1 },
           { clé2, valeur2 }
            [etc..]
        };
     
    for (std::pair<decltype(foo.begin()->first), decltype( foo.begin()->second)> paire : foo)
        {
            std::cout << paire.first << std::endl << paire.second;
        }
    est-ce qu'il y a une meilleure façon de faire?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (decltype(foo)::value_type paire : foo)
    ou encore

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Par défaut
    ah nickel! j'avais vu value_type dans la doc mais je ne trouvais pas comment m'en servir (j'ai pas encore vu la poo). du coup les member types s'utilisent toujours avec l'opérateur de portée?

  5. #5
    Invité
    Invité(e)
    Par défaut
    En général oui, on met le type puis l'opérateur de portée puis le member type.
    Si on est déjà dans l'espace de nom ce n'est pas nécessaire (cf exemple suivant) mais c'est un peu particulier.

    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
    19
    20
    21
    22
    23
    24
    #include <iostream>
    #include <unordered_map>
     
    using umap = std::unordered_map<int, double>;
     
    struct mymap : umap {
        mymap(std::initializer_list<value_type> init) : umap(init) {}
     
        void print() {
            for (const value_type & p : *this)
                std::cout << p.first << " -> " << p.second << std::endl;
        }
    };
     
    int main() {
        mymap foo { {1, 5.4}, {2, 3.7} };
     
        foo.print();
     
        for (const mymap::value_type & p : foo)
            std::cout << p.first << " -> " << p.second << std::endl;
     
        return 0;
    }

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 95
    Par défaut
    oulah je comprends pas vraiment ton exemple, je suis le cours de c++ moderne sur zeste de savoir et il y à beaucoup de notions que j'ai pas encore vu

    initializer_list: j'ai été voir la doc ça ne m'a pas beaucoup éclairé, using: je ne l'utilise que pour using namespace std, et encore, le cours n'a pas encore couvert ce sujet, je ne connais pas non plus cette façon d'utiliser les structures avec les deux points:

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/08/2018, 08h28
  2. Trouver les 3 derniers produits de chaque type
    Par guest4541 dans le forum Langage SQL
    Réponses: 17
    Dernier message: 06/09/2016, 09h20
  3. [LabVIEW 8.2] Trouver les bons types d'argument d'une dll
    Par fabrice_91 dans le forum LabVIEW
    Réponses: 16
    Dernier message: 03/02/2009, 17h27
  4. Comment trouver les équivalents Linux de type de variable c++ windows ?
    Par petitclem dans le forum Applications et environnements graphiques
    Réponses: 10
    Dernier message: 07/08/2008, 09h14
  5. fopen -> différences entres les types d'ouvertur
    Par Patrick PETIT dans le forum C
    Réponses: 10
    Dernier message: 01/06/2003, 18h19

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