Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
collection [2016/03/28 03:01] gbdivers |
collection [2017/08/23 12:45] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | + | ^ [[nombres_aleatoires|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[map|Chapitre suivant]] ^ |
Ligne 63: | Ligne 63: | ||
</note> | </note> | ||
- | Il est également possible de parcourir une collection du dernier élément au premier élément en utilisant les fonctions ''rbegin'' (//reverse begin//) et ''rend'' (//reverse end//). Ces fonctions sont utilisables uniquement en fonctions membres. | + | Notez bien que même si ''std::string'' est une collection, c'est un cas particulier lorsque vous l'utilisez avec ''std::cout''. Dans ce cas, ''std::string'' n'est pas affichée comme un collection, mais bien comme une chaîne de caractères. Ce qui veut dire que dans le cas général de n'importe quelle collection, vous ne pouvez pas afficher directement son contenu avec ''std::cout''. Un code d'exemple est donné a la fin de ce chapitre pour afficher le contenu d'une collection. |
- | + | ||
- | Par exemple, il est possible de trier dans l'ordre inverse de cette manière : | + | |
<code cpp> | <code cpp> | ||
- | #include <iostream> | + | std::vector<int> v { 1, 2, 3 }; |
- | #include <string> | + | std::cout << v << std::endl; // erreur |
- | #include <algorithm> | + | |
- | + | ||
- | int main() { | + | |
- | std::string s { "azerty" }; | + | |
- | + | ||
- | std::sort(std::begin(s), std::end(s)); | + | |
- | std::cout << s << std::endl; | + | |
- | + | ||
- | std::sort(s.rbegin(), s.rend()); | + | |
- | std::cout << s << std::endl; | + | |
- | } | + | |
</code> | </code> | ||
- | |||
- | affiche : | ||
- | |||
- | <code> | ||
- | aertyz | ||
- | zytrea | ||
- | </code> | ||
- | |||
- | <note>**Afficher le contenu d'un collection** | ||
- | |||
- | Notez bien que même si ''std::string'' est une collection, c'est un cas particulier lorsque vous l'utilisez avec ''std::cout''. Dans ce cas, ''std::string'' n'est pas affichée comme un collection, mais bien comme une chaîne de caractères. Ce qui veut dire que dans le cas général de n'importe quelle collection, vous ne pouvez pas afficher directement son contenu avec ''std::cout''. Un code d'exemple est donné a la fin de ce chapitre pour afficher le contenu d'une collection. | ||
- | </note> | ||
Ligne 105: | Ligne 80: | ||
<code cpp> | <code cpp> | ||
- | std::vector<int> const integers {}; | + | std::vector<int> integers {}; |
</code> | </code> | ||
Ligne 183: | Ligne 158: | ||
Par défaut, ''std::vector'' ne contient pas d'éléments lors de l'initialisation de la variable ''integers''. Comme ''std::vector'' est un tableau de taille redimensionnable, vous pourrez ajouter des éléments par la suite. | Par défaut, ''std::vector'' ne contient pas d'éléments lors de l'initialisation de la variable ''integers''. Comme ''std::vector'' est un tableau de taille redimensionnable, vous pourrez ajouter des éléments par la suite. | ||
- | Au contraire, ''std::array'' est initialisé avec cinq éléments dans le code précédent. Il est possible de créer une ''std::array'' avec aucun élément, mais comme il n'est pas possible d'ajouter des éléments, l'intérêt est limité. Cela i | + | Au contraire, ''std::array'' est initialisé avec cinq éléments dans le code précédent. Il est possible de créer une ''std::array'' avec aucun élément, mais comme il n'est pas possible d'ajouter des éléments, l'intérêt est limité. |
<note>Remarque : pour rappel, le but de ce cours n'est pas de vous présenter toutes les syntaxes possibles, mais celles qui sont utiles à connaître pour comprendre les bases du C++. Il est possible d'utiliser d'autres syntaxes pour les classes ''std::vector'' et ''std::array'', mais la compréhension de ces syntaxes nécessite des connaissances plus avancées en C++.</note> | <note>Remarque : pour rappel, le but de ce cours n'est pas de vous présenter toutes les syntaxes possibles, mais celles qui sont utiles à connaître pour comprendre les bases du C++. Il est possible d'utiliser d'autres syntaxes pour les classes ''std::vector'' et ''std::array'', mais la compréhension de ces syntaxes nécessite des connaissances plus avancées en C++.</note> | ||
Ligne 193: | Ligne 168: | ||
</code> | </code> | ||
- | On retrouve ici la différence de syntaxe entre argument template et argument de fonction. Pour ''std::array'', la taille du tableau (nombre d'éléments) est fixée à la compilation, c'est donc un argument template (entre chevrons). Pour ''std::vector'', la taille est variable durant l'exécution, c'est donc un argument de fonction (entre parenthèses). | + | On retrouve ici la différence de syntaxe entre argument //template// et argument de fonction. Pour ''std::array'', la taille du tableau (nombre d'éléments) est fixée à la compilation, c'est donc un argument //template// (entre chevrons). Pour ''std::vector'', la taille est variable durant l'exécution, c'est donc un argument de fonction (entre parenthèses). |
+ | |||
+ | <note>**Accolades et parentheses** | ||
+ | |||
+ | Remarquez bien ici l'utilisation des parenthèses au lieu des accolades, ce n'est pas une erreur de frappe. | ||
+ | |||
+ | Les accolades permettent de définir une liste de valeurs, qui seront insérées directement dans une collection. Les parenthèses permettent d'appeler un constructeur (une fonction spéciale permettant d'initialiser une classe). | ||
+ | </note> | ||
Dans les deux cas, il est possible de connaître la taille d'un tableau en utilisant la fonction membre ''size''. | Dans les deux cas, il est possible de connaître la taille d'un tableau en utilisant la fonction membre ''size''. | ||
Ligne 217: | Ligne 199: | ||
</code> | </code> | ||
- | Vous pouvez donner des valeurs entre les crochets pour initialiser le tableau. Une liste de valeurs (//initializer-list//) s'écrit entre crochets, avec des virgules comme séparateurs. | + | Vous pouvez donner des valeurs entre les accolades pour initialiser le tableau. Une liste de valeurs (//initializer-list//) s'écrit entre accolades, avec des virgules comme séparateurs. |
<code cpp> | <code cpp> | ||
Ligne 364: | Ligne 346: | ||
int main() { | int main() { | ||
- | std::string const s { "hello, wolrd!" }; | + | std::string const s { "hello, world!" }; |
for (auto const value: s) | for (auto const value: s) | ||
std::cout << value << ' '; | std::cout << value << ' '; | ||
Ligne 373: | Ligne 355: | ||
<code> | <code> | ||
- | h e l l o , w o l r d ! | + | h e l l o , w o r l d ! |
</code> | </code> | ||
- | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | + | ^ [[nombres_aleatoires|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[map|Chapitre suivant]] ^ |