^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ ====== [Aller plus loin] Les paires, tuples et structures ====== Conteneur = collection d'objets de même type. Par exemple, dans bibliothèque, livre, mais également des dvd Pair = 2 éléments (first et second), de type différent. Création avec make_pair Tuple = N éléments, création avec make_tuple. Inconvénient : non nommé, pas de sens sémantique. Par exemple pair peut représenter un nom et un prénom, un titre de livre et un auteur, une marque de voiture et un modèle, etc. Cela dit juste que l'on a 2 string, mais ne donne pas de sens à ces string. Structure = N éléments de type différent, avec des noms. Agrégation de variables (avec nom, type et valeur). Nom de structure. Par exemple : struct Personne { string nom {}; string prenom {}; }; struct Livre { string titre {}; string auteur {}; }; struct Voiture { string marque {}; string modele {}; }; N'importe quel type : struct Personne { string nom {}; int age {}; double taille {}; bool masculin { true }; }; Voir même contenir d'autre structure : struct Identite { string nom {}; string prenom {}; }; struct Personne { Identite identite {}; int age {}; double taille {}; bool masculin { true }; }; Personne personne {}; personne.age = 24; personne.identite.nom = "toto"; Permet de créer de nouveaux types. Sémantique liée = mieux que tuple/pair (moins de risque d'erreur, meilleur compréhension du code) Syntaxe pour déclarer : struct, bloc de déclaration, ne pas oublier le ; Initialisation des membres : par défaut ou avec une valeur (si cela à un sens) Accéder aux variable membres. En lecture et en écriture Généricité ? Ajouter un type template, permet de modifier la structure de données. Par exemple : template struct Personne { T identifiant {}; string nom {}; string prenom {}; }; Utilisation : Personne personne_avec_numero_secu {}; personne_avec_numero_secu.identifiant = 12234567897; Personne personne_avec_autre {}; personne_avec_autre.identifiant = "1a4slsn"; // utilisation possible avec aussi des structures Personne personne_avec_identifiant {}; personne_avec_identifiant.identifiant.nom = "toto"; personne_avec_identifiant.identifiant.prenom = "dupont"; Remarque : déjà rencontré des types génériques : vector et array. Même principe, mais avec plus de fonctionnalités. On verra par la suite en détail comment ajouter encore plus de fonctionnalités. ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ {{tag> Cours C++}}