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 :

Est-il possible de créer un tableau contenant à la fois des string et des int ?


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Octobre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Etudiant en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 26
    Points : 28
    Points
    28
    Par défaut Est-il possible de créer un tableau contenant à la fois des string et des int ?
    Bonsoir,

    Ma question est : Est-il possible de créer un tableau contenant à la fois des string et des int ? Si oui, comment faire ? C'est pour un programme demandant des informations à l'utilisateur, à la fin il fais un listing de toute les infos de l'utilisateur (lieu de résidence, age, nom, prénom...) sous forme de tableau, donc il y auras des chaines de caractere et des nombres. C'est pour cela que je pose la question.

    Merci d'avance.

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonsoir, tu peux créer un tableau de classes contenant ces informations ?!

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Points : 158
    Points
    158
    Par défaut
    Il te faudrait plutot créer une classe ou une structure avec les données que tu as cité en attribut.

  4. #4
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Attention à pas confondre la façon dont les données seront affichées et la façon dont elles seront stockées.

    Un tableau (vector le plus souvent) permet de stocker des données de même types (ou au moins de base commune avec l'héritage) pour pouvoir faire des traitements sur le tout.

    Ici ça n'a pas de sens de mélanger toutes les informations.
    Tu auras certainement quelques chose de cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // infos regroupées dans une struct / classe (attribut const / privés au besoin)
    struct Personne {
       int age;
       std::string adresse;
       ...
    };
     
    // et si tu traites plusieurs personnes alors la oui, un tableau prend du sens
    std::vector<Personne> personnes;

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Une idée serait d'utiliser une classe du style de QVariant -> comme expliqué ici : http://alp.developpez.com/tutoriels/type-erasure/#LV
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    En JavaScript, PHP et en Java (sans l'utilisation des génériques pour les listes), tu peux avoir avoir un mélange direct de string et de int dans un tableau.

    A moins de passer par un subterfuge en C++, tu ne peux pas, enfin il n'y a pas d'intérêt vraiment à mélanger les types.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Points : 158
    Points
    158
    Par défaut
    enfin il n'y a pas d'intérêt vraiment à mélanger les types
    Faux, Quel serait alors la raison d'être de std::tuple ou boost::tuple ?

  8. #8
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Aucune raison

    Plus sérieusement. Tuple est une méthode pour agréger des données simplement, sans passer par une structure de données classiques (class, struct). Les cas d'utilisation sont différents (et l'utilisation de tuple au lieu de class/struct avec des vrais noms est discutable)*

    Là, on parle d'un conteneur List<T> avec T pouvant prendre des types différents. L'utilisation est très différentes d'un tuple (pas de begin, end, iterator, contenu compile-time vs runtime, etc)

    Plus que le manque d'intérêt, c'est plus le fait que l'on perd un des intérêts du C++ : la vérification des contrats à la compilation. Les langages à typages dynamique (ou l'utilisation de boost.variant, boost.any, QVariant, etc. en C++) offrent des garanties plus faibles (la responsabilité de la vérification des types appartient aux développeurs et pas au langage).
    En C++, même si on peut quand même faire du typage dynamique, c'est souvent le signe d'un manque de réflexion sur la conception. Donc quand on arrive à ce genre de solution, il faut faire une pause et se poser des questions sur la conception


    * EDIT: sauf pour la programmation générique, c'est très utile... d'où son ajout dans le C++11

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    union MonType
    {
    unsigned u;
    char *p;
    } var;
     
    std::vector<MonType> v;

  10. #10
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Hum, bof

    En C++, il est préférable d'utiliser std::string plutôt que char* pour les chaînes de caractères (RAII)
    Et il n'y a pas non plus de vérification de type avec les unions, il faudra également conserver le type (ou faire sans vérification... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct Type {
        enum type_du_type { UNSIGNED, STRING };
        union {
            unsigned u;
            string s;
        } var
    };
    C'est moche...

  11. #11
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par camboui Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    union MonType
    {
    unsigned u;
    char *p;
    } var;
     
    std::vector<MonType> v;
    Sauf qu'il faudrait utiliser un discriminant pour savoir quel type est stocké:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct MonType
    {
           union
           {
                 unsigned u;
                 char *p;
           }; //pas standard me semble ou : }var;
           enum Type{Unsigned, Char}m_type;
    }
    EDIT : grillé par gbdivers

  12. #12
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    @Neckara
    Les grands esprits se rencontrent

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    En C++, même si on peut quand même faire du typage dynamique, c'est souvent le signe d'un manque de réflexion sur la conception. Donc quand on arrive à ce genre de solution, il faut faire une pause et se poser des questions sur la conception
    Et on se rend compte que 95% des demandes de débutant qui veulent faire ça n'ont juste pas pensé qu'il s'agissait en fait d'une structure de données et non d'un "tableau batard" pour tout stocker.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2010, 08h42
  2. Réponses: 5
    Dernier message: 07/11/2005, 11h11
  3. est il possible de créer dynamiquement une class ???
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 12/07/2005, 16h22
  4. Réponses: 3
    Dernier message: 07/04/2005, 15h04
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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