Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
pair_et_tuple [2014/05/28 12:33] gbdivers créée |
pair_et_tuple [2016/07/05 18:55] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ||
- | ====== Les paires, tuples et structures ====== | + | ====== [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 | 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érents. Création avec make_pair | + | 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. | Tuple = N éléments, création avec make_tuple. | ||
- | Inconvénient : non nommé, pas de sens sémantique. Par exemple pair<string, string> peut représenter un nom et prénom, un titre de livre et auteur, une marque de voiture et un modèle, etc. Cela dit juste que l'on à 2 string, mais de donne pas de sens à ces string. | + | Inconvénient : non nommé, pas de sens sémantique. Par exemple pair<string, string> 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érents, avec des noms. Agrégation de variables (avec nom, type et valeur). Nom de structure. | + | 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 : | Par exemple : | ||
Ligne 38: | Ligne 38: | ||
struct Personne { | struct Personne { | ||
string nom {}; | string nom {}; | ||
- | int age {} | + | int age {}; |
double taille {}; | double taille {}; | ||
bool masculin { true }; | bool masculin { true }; | ||
Ligne 54: | Ligne 54: | ||
struct Personne { | struct Personne { | ||
Identite identite {}; | Identite identite {}; | ||
- | int age {} | + | int age {}; |
double taille {}; | double taille {}; | ||
bool masculin { true }; | bool masculin { true }; | ||
}; | }; | ||
+ | |||
+ | Personne personne {}; | ||
+ | personne.age = 24; | ||
+ | personne.identite.nom = "toto"; | ||
</code> | </code> | ||
Ligne 69: | Ligne 73: | ||
Accéder aux variable membres. En lecture et en écriture | 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 : | ||
+ | |||
+ | <code> | ||
+ | template<typename T> | ||
+ | struct Personne { | ||
+ | T identifiant {}; | ||
+ | string nom {}; | ||
+ | string prenom {}; | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | Utilisation : | ||
+ | |||
+ | <code> | ||
+ | Personne<int> personne_avec_numero_secu {}; | ||
+ | personne_avec_numero_secu.identifiant = 12234567897; | ||
+ | |||
+ | |||
+ | Personne<string> personne_avec_autre {}; | ||
+ | personne_avec_autre.identifiant = "1a4slsn"; | ||
+ | |||
+ | // utilisation possible avec aussi des structures | ||
+ | Personne<int> personne_avec_identifiant {}; | ||
+ | personne_avec_identifiant.identifiant.nom = "toto"; | ||
+ | personne_avec_identifiant.identifiant.prenom = "dupont"; | ||
+ | </code> | ||
+ | |||
+ | 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 ^ | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ||
{{tag> Cours C++}} | {{tag> Cours C++}} |