Les templates API STL Les liens
Cours de C++
Les templates et la STL Gauthier Quesnel quesnel@lil.univ-littoral.fr Laboratoire d’Informatique du Littoral3 avril 2006
Les templates API STL Les liens 1 Les templates La philosophie Exemples simples 2 API STL
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les templates API STL Les liens La philosophie Exemples simples
Plan
1 Les templates La philosophie Exemples simples 2 API STLLes chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués 3 Les liens
Les templates API STL Les liens La philosophie Exemples simples
Les templates
La philosophie du couper/remplacer : Example 1 t e m p l a t e < c l a s s C > 2 std :: s t r i n g t o _ s t r i n g ( c o n s t C & c ) 3 { 4 std :: o s t r i n g s t r e a m o ; 5 o < < c ; 6 r e t u r n o . str (); 7 } 8 9 std :: s t r i n g t o _ s t r i n g < d o u b l e > ( 3 . 1 2 3 3 ) ; 10 std :: s t r i n g t o _ s t r i n g < i n t >(3); 11 std :: s t r i n g t o _ s t r i n g < b o o l >( t r u e ); 12 std :: s t r i n g t o _ s t r i n g ( 2 . 1 2 3 0 8 ) ;Les templates API STL Les liens La philosophie Exemples simples
Les templates
La philosophie du couper/remplacer : Example 1 t e m p l a t e < c l a s s C > 2 std :: s t r i n g t o _ s t r i n g ( c o n s t C & c ) 3 { 4 std :: o s t r i n g s t r e a m o ; 5 o < < c ; 6 r e t u r n o . str (); 7 } 8 9 std :: s t r i n g t o _ s t r i n g < d o u b l e > ( 3 . 1 2 3 3 ) ; 10 std :: s t r i n g t o _ s t r i n g < i n t >(3); 11 std :: s t r i n g t o _ s t r i n g < b o o l >( t r u e ); 12 std :: s t r i n g t o _ s t r i n g ( 2 . 1 2 3 0 8 ) ;Les templates API STL Les liens La philosophie Exemples simples
Les templates
Remplace le template par la donnée :
Example 1 std :: s t r i n g t o _ s t r i n g < d o u b l e > ( 3 . 1 2 3 3 ) ; 2 3 // Est é q u i v a l e n t à : 4 5 std :: s t r i n g t o _ s t r i n g ( c o n s t d o u b l e& c ) 6 { 7 std :: o s t r i n g s t r e a m o ; 8 o < < c ; 9 r e t u r n o . str (); 10 }
Les templates API STL Les liens La philosophie Exemples simples
Les templates
Remplace le template par la donnée :
Example 1 std :: s t r i n g t o _ s t r i n g < d o u b l e > ( 3 . 1 2 3 3 ) ; 2 3 // Est é q u i v a l e n t à : 4 5 std :: s t r i n g t o _ s t r i n g ( c o n s t d o u b l e& c ) 6 { 7 std :: o s t r i n g s t r e a m o ; 8 o < < c ; 9 r e t u r n o . str (); 10 }
Les templates API STL Les liens La philosophie Exemples simples
Plan
1 Les templates La philosophie Exemples simples 2 API STLLes chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués 3 Les liens
Les templates API STL Les liens La philosophie Exemples simples
Les templates
Les templates : programmation générique en français.
Les types fournis au template peuvent être des types simples, des classes ou même des fonctions.
Example
1 std :: v e c t o r < i n t > tab (100 , 0);
2 std :: g e n e r a t e ( tab . b e g i n () , tab . end () , r a n d );
3 4 // la f o n c t i o n d a n s l ’ API C ++ : 5 t e m p l a t e < t y p e n a m e _ F o r w a r d I t e r a t o r , t y p e n a m e _ G e n e r a t o r > 6 v o i d std :: g e n e r a t e ( _ F o r w a r d I t e r a t o r _ _f i r s t , 7 _ F o r w a r d I t e r a t o r __last , 8 _ G e n e r a t o r _ _ g e n ) 9 { 10 f o r (; _ _ f i r s t != _ _ l a s t ; ++ _ _ f i r s t ) 11 * _ _ f i r s t = _ _ g e n (); 12 }
Les templates API STL Les liens La philosophie Exemples simples
Les templates
Les templates : programmation générique en français. Les types fournis au template peuvent être des types simples, des classes ou même des fonctions.
Example
1 std :: v e c t o r < i n t > tab (100 , 0);
2 std :: g e n e r a t e ( tab . b e g i n () , tab . end () , r a n d );
3 4 // la f o n c t i o n d a n s l ’ API C ++ : 5 t e m p l a t e < t y p e n a m e _ F o r w a r d I t e r a t o r , t y p e n a m e _ G e n e r a t o r > 6 v o i d std :: g e n e r a t e ( _ F o r w a r d I t e r a t o r _ _f i r s t , 7 _ F o r w a r d I t e r a t o r __last , 8 _ G e n e r a t o r _ _ g e n ) 9 { 10 f o r (; _ _ f i r s t != _ _ l a s t ; ++ _ _ f i r s t ) 11 * _ _ f i r s t = _ _ g e n (); 12 }
Les templates API STL Les liens La philosophie Exemples simples
Les templates
Les templates : programmation générique en français. Les types fournis au template peuvent être des types simples, des classes ou même des fonctions.
Example
1 std :: v e c t o r < i n t > tab (100 , 0);
2 std :: g e n e r a t e ( tab . b e g i n () , tab . end () , r a n d );
3 4 // la f o n c t i o n d a n s l ’ API C ++ : 5 t e m p l a t e < t y p e n a m e _ F o r w a r d I t e r a t o r , t y p e n a m e _ G e n e r a t o r > 6 v o i d std :: g e n e r a t e ( _ F o r w a r d I t e r a t o r _ _f i r s t , 7 _ F o r w a r d I t e r a t o r __last , 8 _ G e n e r a t o r _ _ g e n ) 9 { 10 f o r (; _ _ f i r s t != _ _ l a s t ; ++ _ _ f i r s t ) 11 * _ _ f i r s t = _ _ g e n (); 12 }
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles.
des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données.
les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Standard Template Library
Une partie très importante du langage C++ : la STL (Standard Template Library)
La STL propose un grand nombre d’éléments :
des structures de données, tableaux, listes chaînes, piles. des algorithmes de recherches, suppression, de tas.
Il existe principalement trois types d’éléments :
les conteneurs : stockent les données. les itérateurs : parcourent les conteneurs.
les algorithmes : travaillent sur les conteneurs à partir des itérateurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les conteneurs
Les conteneurs permettent de contenir des éléments : la généricité paramétrera le type des éléments à utiliser.
Plusieurs types de conteneurs sont utilisables : les tableaux, classes vectoret deque, les listeslist, les pilesstack, lesqueue,
les ensembles set, les ensembles multiplesmultiset, les cartes
map et les multicartes multimap.
Il n’y a pas de classe générique de base (classe Object du java), par exemple). Cette option aurait pu être intéressante sur bien des aspects, mais il ne faut jamais oublier que l’un des buts fondamentaux de la librairie STL est d’être la plus rapide possible (et la liaison dynamique à un coup).
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les conteneurs
Les conteneurs permettent de contenir des éléments : la généricité paramétrera le type des éléments à utiliser. Plusieurs types de conteneurs sont utilisables : les tableaux, classes vectoret deque, les listeslist, les pilesstack, lesqueue,
les ensembles set, les ensembles multiplesmultiset, les cartes
map et les multicartes multimap.
Il n’y a pas de classe générique de base (classe Object du java), par exemple). Cette option aurait pu être intéressante sur bien des aspects, mais il ne faut jamais oublier que l’un des buts fondamentaux de la librairie STL est d’être la plus rapide possible (et la liaison dynamique à un coup).
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les conteneurs
Les conteneurs permettent de contenir des éléments : la généricité paramétrera le type des éléments à utiliser. Plusieurs types de conteneurs sont utilisables : les tableaux, classes vectoret deque, les listeslist, les pilesstack, lesqueue,
les ensembles set, les ensembles multiplesmultiset, les cartes
map et les multicartes multimap.
Il n’y a pas de classe générique de base (classe Object du java), par exemple). Cette option aurait pu être intéressante sur bien des aspects, mais il ne faut jamais oublier que l’un des buts fondamentaux de la librairie STL est d’être la plus rapide possible (et la liaison dynamique à un coup).
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL !
Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux.
etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Les itérateurs
Les itérateurs sont fondamentaux dans la STL ! Ils en existent de plusieurs types :
Accès aléatoires : tableaux.
Accès linéaires : les listes, les maps, les tableaux. etc.
Ils permettent de manipuler les conteneurs de manière transparente.
Un itérateur peut-être vu comme un pointeur sur un élément d’un conteneur.
Par définition, un itérateur permet de récupérer une donnée (pour la manipuler) et de passer à la suivante pour mettre en place l’itération.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Algorithmes et allocateurs
Les algorithmes :
Les algorithmes permettent de manipuler les données d’un conteneur de manière transparente.
Les algorithmes utilisent des itérateurs linéaire ou à accès aléatoire → tous les conteneurs peuvent appliquer les algorithmes.
Il en existe beaucoup :
std::find: cherche quelque chose
std::fill: rempli un conteneur avec une donnée.
std::generate: génére des données à partir d’une fonction.
Les allocateurs permettent de choisir entre plusieurs possibilités d’allocation de mémoire pour les conteneurs.
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Plan
1 Les templates La philosophie Exemples simples
2 API STL
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués 3 Les liens
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Tableau de caracatères : char
Les chaînes de caractères de type C sont compatibles avec le
langage C++. Certaines classes C++ utilisent des char[].
Example 1 # i n c l u d e < f s t r e a m > 2 3 i n t m a i n ( i n t argc , c h a r ** a r g v ) 4 { 5 i n t i = 0; 6 7 if ( a r g c == 2) { 8 std :: i f s t r e a m o ( a r g v [ 1 ] ) ; 9 o > > i ; 10 } 11 std :: c o u t < < i ; 12 }
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Tableau de caracatères : char
Les chaînes de caractères de type C sont compatibles avec le
langage C++. Certaines classes C++ utilisent des char[].
Example 1 # i n c l u d e < f s t r e a m > 2 3 i n t m a i n ( i n t argc , c h a r ** a r g v ) 4 { 5 i n t i = 0; 6 7 if ( a r g c == 2) { 8 std :: i f s t r e a m o ( a r g v [ 1 ] ) ; 9 o > > i ; 10 } 11 std :: c o u t < < i ; 12 }
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()et data(): la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=,insert,replace, erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find,rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ».
Une API riche :
operator[](size_t): l’accès à unchar.
c_str()et data(): la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=,insert,replace, erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find,rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
http://www.sgi.com/tech/stl/basic_string.html
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()etdata() : la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=, insert,replace, erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find, rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()etdata() : la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=, insert,replace, erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find, rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
http://www.sgi.com/tech/stl/basic_string.html
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()etdata() : la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=, insert,replace, erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find, rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()etdata() : la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=, insert,replace,erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find, rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
http://www.sgi.com/tech/stl/basic_string.html
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()etdata() : la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=, insert,replace,erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find, rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::string
La classe std::stringencapsule un buffer de caractères.
Elle peut contenir plusieurs caractères de fin de ligne « 0 ». Une API riche :
operator[](size_t): l’accès à unchar.
c_str()etdata() : la conversion de la chaîne de caractères en tableau de caractères avec ou sans le caractère fin de ligne.
append,operator+,operator+=, insert,replace,erase,assign,
operator=: les fonctions d’ajout, d’insertion, de suppression, d’affectation.
find, rfind,find_first_of,find_first_not_of,find_last_of : les fonctions de recherche.
http://www.sgi.com/tech/stl/basic_string.html
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::stringstream : les flux de chaînes
std::string ne possède de fonctions pour ajouter des entiers, réels ou booléen directement.
Les stringstream permettent une édition des chaînes de caractères par les flux :
Example 1 std :: o s t r i n g s t r e a m st ; 2 st < < " la v a l e u r de x est : " < < 10 < < " pixels , " 3 < < " a l o r s que y v a u t : " < < 0 . 3 4 5 < < " points , " 4 < < " x == 10 ? : " < < std :: b o o l a l p h a < < ( x == 10) < < " .\ n " 5 6 std :: s t r i n g c h a i n e ( st . str ( ) ) ; // t r a n s f o r m e en std :: s t r i n g 7 std :: c o u t < < c h a i n e ; 8 p r i n t f ( " La c h a i n e : % s " , c h a i n e . c _ s t r ( ) ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::stringstream : les flux de chaînes
std::string ne possède de fonctions pour ajouter des entiers, réels ou booléen directement.
Les stringstream permettent une édition des chaînes de caractères par les flux :
Example 1 std :: o s t r i n g s t r e a m st ; 2 st < < " la v a l e u r de x est : " < < 10 < < " pixels , " 3 < < " a l o r s que y v a u t : " < < 0 . 3 4 5 < < " points , " 4 < < " x == 10 ? : " < < std :: b o o l a l p h a < < ( x == 10) < < " .\ n " 5 6 std :: s t r i n g c h a i n e ( st . str ( ) ) ; // t r a n s f o r m e en std :: s t r i n g 7 std :: c o u t < < c h a i n e ; 8 p r i n t f ( " La c h a i n e : % s " , c h a i n e . c _ s t r ( ) ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::stringstream : les flux de chaînes
std::string ne possède de fonctions pour ajouter des entiers, réels ou booléen directement.
Les stringstream permettent une édition des chaînes de caractères par les flux :
Example 1 std :: o s t r i n g s t r e a m st ; 2 st < < " la v a l e u r de x est : " < < 10 < < " pixels , " 3 < < " a l o r s que y v a u t : " < < 0 . 3 4 5 < < " points , " 4 < < " x == 10 ? : " < < std :: b o o l a l p h a < < ( x == 10) < < " .\ n " 5 6 std :: s t r i n g c h a i n e ( st . str ( ) ) ; // t r a n s f o r m e en std :: s t r i n g 7 std :: c o u t < < c h a i n e ; 8 p r i n t f ( " La c h a i n e : % s " , c h a i n e . c _ s t r ( ) ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
Plan
1 Les templates La philosophie Exemples simples
2 API STL
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués 3 Les liens
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Les tableaux de type C existe en C++ : Les tableaux alloués dans la pile :
1 d o u b l e t a b 1 [ 1 0 0 0 ] ;
Alloués dans le tas, ne pas oublier la destruction :
1 d o u b l e* t a b 2 = n e w d o u b l e [ 1 0 0 0 ] ;
2 d e l e t e[] t a b 2 ;
Alloués dans le tas à deux dimensions :
1 d o u b l e** t a b 3 = n e w d o u b l e * [ 1 0 0 0 ] ; 2 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 3 t a b 3 [ i ] = n e w d o u b l e [ 1 0 0 0 ] ; 4 5 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 6 d e l e t e[] t a b 3 [ i ]; 7 d e l e t e[] t a b 3 ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Les tableaux de type C existe en C++ : Les tableaux alloués dans la pile :
1 d o u b l e t a b 1 [ 1 0 0 0 ] ;
Alloués dans le tas, ne pas oublier la destruction :
1 d o u b l e* t a b 2 = n e w d o u b l e [ 1 0 0 0 ] ;
2 d e l e t e[] t a b 2 ;
Alloués dans le tas à deux dimensions :
1 d o u b l e** t a b 3 = n e w d o u b l e * [ 1 0 0 0 ] ; 2 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 3 t a b 3 [ i ] = n e w d o u b l e [ 1 0 0 0 ] ; 4 5 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 6 d e l e t e[] t a b 3 [ i ]; 7 d e l e t e[] t a b 3 ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Les tableaux de type C existe en C++ : Les tableaux alloués dans la pile :
1 d o u b l e t a b 1 [ 1 0 0 0 ] ;
Alloués dans le tas, ne pas oublier la destruction :
1 d o u b l e* t a b 2 = n e w d o u b l e [ 1 0 0 0 ] ;
2 d e l e t e[] t a b 2 ;
Alloués dans le tas à deux dimensions :
1 d o u b l e** t a b 3 = n e w d o u b l e * [ 1 0 0 0 ] ; 2 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 3 t a b 3 [ i ] = n e w d o u b l e [ 1 0 0 0 ] ; 4 5 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 6 d e l e t e[] t a b 3 [ i ];
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Gestion des tableaux C est problématique dans le sens où il faut faire très attention aux accès, à l’allocation, désallocation etc.
La classe std::vectorest un très bon remplacement :
Gestion automatique de la mémoire, allocation, réallocation et destruction.
Coût de O(1) pour l’accès aléatoire et la suppression en fin de tableau.
Coût de O(n) pour l’ajout ou la suppression d’une case.
Exemple : Example 1 std :: v e c t o r < d o u b l e > t a b 2 ( 1 0 0 0 ) ; 2 std :: v e c t o r < std :: v e c t o r > t a b 3 ( 1 0 0 0 ) ; 3 f o r ( s i z e _ t i = 0; i < 1 0 0 0 ; ++ i ) 4 t a b 3 [ i ]. r e s i z e ( 1 0 0 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Les fonctions membres :
operator[](int) et at(int)les opérateurs d’accès aléatoires aux éléments, le deuxième lève une exception si l’entier passé en paramètre sort du tableau.
size_t size() et resize(size_t)etreserve(size_t) les fonctions pour, respectivement, connaître la taille d’un tableau, modifier sa taille ou préallouer une zone mémoire.
push_back(T), pop_back(), les fonction d’ajout et de suppression d’élément en fin de tableau (coût O(1)).
Example
1 std :: v e c t o r < d o u b l e > v (1000 , 1 . 0 ) ;
2 v . p u s h _ b a c k ( 2 . 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Les fonctions membres :
operator[](int) et at(int)les opérateurs d’accès aléatoires aux éléments, le deuxième lève une exception si l’entier passé en paramètre sort du tableau.
size_t size() etresize(size_t)et reserve(size_t)les fonctions pour, respectivement, connaître la taille d’un tableau, modifier sa taille ou préallouer une zone mémoire.
push_back(T), pop_back(), les fonction d’ajout et de suppression d’élément en fin de tableau (coût O(1)).
Example
1 std :: v e c t o r < d o u b l e > v (1000 , 1 . 0 ) ;
2 v . p u s h _ b a c k ( 2 . 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector
Les fonctions membres :
operator[](int) et at(int)les opérateurs d’accès aléatoires aux éléments, le deuxième lève une exception si l’entier passé en paramètre sort du tableau.
size_t size() etresize(size_t)et reserve(size_t)les fonctions pour, respectivement, connaître la taille d’un tableau, modifier sa taille ou préallouer une zone mémoire.
push_back(T), pop_back(), les fonction d’ajout et de suppression d’élément en fin de tableau (coût O(1)).
Example
1 std :: v e c t o r < d o u b l e > v (1000 , 1 . 0 ) ;
2 v . p u s h _ b a c k ( 2 . 0 ) ;
Les templates
API STL
Les liens
Les chaînes de caractères
Les tableaux
Les listes chaînées : std::list Les conteneurs évolués
std::vector, les itérateurs
Les itérateurs permettent de manipuler plus facilement les éléments des conteneurs de la STL :
Example 1 std :: v e c t o r < std :: s t r i n g > t ( 2 0 0 ) ; 2 f o r ( std :: v e c t o r < i n t >:: i t e r a t o r it = t . b e g i n (); 3 it != t . end (); ++ it ) 4 std :: c o u t < < (* it ) < < ‘ ‘ ’ ’ ; 5 6 std :: v e c t o r < i n t >:: i t e r a t o r fd ; 7 8 fd = std :: f i n d ( t . b e g i n () , t . end () , ‘ ‘ d e b i a n ’ ’ ); 9 10 if ( fd != t . end ()) 11 v . e r a s e ( fd );
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
Plan
1 Les templates La philosophie Exemples simples
2 API STL
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués 3 Les liens
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
std::list
Une liste doublement chaînée avec un coût en O(1) pour l’ajout, la suppression n’importe où dans la liste.
push_back(T),push_front(T),pop_back()et pop_front()les fonctions d’ajout en début et fin de liste et les fonctions de suppression en début et fin de liste.
Example 1 std :: l i s t < i n t > l ; 2 l . p u s h _ b a c k ( 5 ) ; 3 l . p u s h _ f r o n t ( 3 ) ; 4 5 std :: c o u t < < l . f r o n t () == 3; 6 7 std :: l i s t < i n t >:: i t e r a t o r it ; 8 it = std :: f i n d ( l . b e g i n (); l . end (); 3); 9 10 std :: c o u t < < it != l . end ();
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
std::list
Une liste doublement chaînée avec un coût en O(1) pour l’ajout, la suppression n’importe où dans la liste.
push_back(T),push_front(T),pop_back()et pop_front()les fonctions d’ajout en début et fin de liste et les fonctions de suppression en début et fin de liste.
Example 1 std :: l i s t < i n t > l ; 2 l . p u s h _ b a c k ( 5 ) ; 3 l . p u s h _ f r o n t ( 3 ) ; 4 5 std :: c o u t < < l . f r o n t () == 3; 6 7 std :: l i s t < i n t >:: i t e r a t o r it ; 8 it = std :: f i n d ( l . b e g i n (); l . end (); 3); 9 10 std :: c o u t < < it != l . end ();
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
std::list
Une liste doublement chaînée avec un coût en O(1) pour l’ajout, la suppression n’importe où dans la liste.
push_back(T),push_front(T),pop_back()et pop_front()les fonctions d’ajout en début et fin de liste et les fonctions de suppression en début et fin de liste.
Example 1 std :: l i s t < i n t > l ; 2 l . p u s h _ b a c k ( 5 ) ; 3 l . p u s h _ f r o n t ( 3 ) ; 4 5 std :: c o u t < < l . f r o n t () == 3; 6 7 std :: l i s t < i n t >:: i t e r a t o r it ; 8 it = std :: f i n d ( l . b e g i n (); l . end (); 3); 9 10 std :: c o u t < < it != l . end ();
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
std::list
Une liste doublement chaînée avec un coût en O(1) pour l’ajout, la suppression n’importe où dans la liste.
push_back(T),push_front(T),pop_back()et pop_front()les fonctions d’ajout en début et fin de liste et les fonctions de suppression en début et fin de liste.
Example 1 std :: l i s t < i n t > l ; 2 l . p u s h _ b a c k ( 5 ) ; 3 l . p u s h _ f r o n t ( 3 ) ; 4 5 std :: c o u t < < l . f r o n t () == 3; 6 7 std :: l i s t < i n t >:: i t e r a t o r it ; 8 it = std :: f i n d ( l . b e g i n (); l . end (); 3);
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
Plan
1 Les templates La philosophie Exemples simples
2 API STL
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
3 Les liens
Les templates
API STL
Les liens
Les chaînes de caractères Les tableaux
Les listes chaînées : std::list
Les conteneurs évolués
Les map : tableau associatif
Cette classe est une table associant une clé à une valeur. Elle est définie en fournissant deux types. À partir de la clé nous pouvons récupérer la valeur avec un coût d’ordre O(log (N)).
Example 1 map < d o u b l e , s t r i n g > m ; 2 m [ 0 . 1 ] = " h e l l o " ; 3 m [ 0 . 5 ] = " w o r l d " ; 4 m [ 0 . 6 ] = " ! " ; 5 6 map < d o u b l e , s t r i n g >:: i t e r a t o r it = m . b e g i n (); 7 f o r (; it != m . end (); ++ it ) 8 c o u t < < (* it ). f i r s t < < " " < < (* it ). s e c o n d < < " \ n " ; 9 10 if ( m . f i n d ( 1 . 0 ) == m . end ()) c o u t < < " 1.0 n ’ e x i s t e pas " ; 11 c o u t < < m [ 1 . 0 ] < < " \ n " ; 12 if ( m . f i n d ( 1 . 0 ) == m . end ()) c o u t < < " 1.0 e x i s t e " ;
Les templates API STL
Les liens
Les liens
Une petite liste de liens :
stl http://www.sgi.com/tech/stl/ C++ http://www.cplusplus.com/ faq C++http://www.parashift.com/c++-faq-lite/index.html gtkmm http://www.gtkmm.org gtkmm le livre : http://www.gtkmm.org/gtkmm2/docs/tutorial/html/index.html gtk+ http://www.gtk.org
Les templates API STL
Les liens
Les liens
Une petite liste de liens :
stl http://www.sgi.com/tech/stl/ C++ http://www.cplusplus.com/ faq C++http://www.parashift.com/c++-faq-lite/index.html gtkmm http://www.gtkmm.org gtkmm le livre : http://www.gtkmm.org/gtkmm2/docs/tutorial/html/index.html gtk+ http://www.gtk.org
Les templates API STL
Les liens
Les liens
Une petite liste de liens :
stl http://www.sgi.com/tech/stl/ C++ http://www.cplusplus.com/ faq C++http://www.parashift.com/c++-faq-lite/index.html gtkmm http://www.gtkmm.org gtkmm le livre : http://www.gtkmm.org/gtkmm2/docs/tutorial/html/index.html gtk+ http://www.gtk.org
Les templates API STL
Les liens
Les liens
Une petite liste de liens :
stl http://www.sgi.com/tech/stl/ C++ http://www.cplusplus.com/ faq C++http://www.parashift.com/c++-faq-lite/index.html gtkmm http://www.gtkmm.org gtkmm le livre : http://www.gtkmm.org/gtkmm2/docs/tutorial/html/index.html gtk+ http://www.gtk.org
Les templates API STL
Les liens
Les liens
Une petite liste de liens :
stl http://www.sgi.com/tech/stl/ C++ http://www.cplusplus.com/ faq C++http://www.parashift.com/c++-faq-lite/index.html gtkmm http://www.gtkmm.org gtkmm le livre : http://www.gtkmm.org/gtkmm2/docs/tutorial/html/index.html gtk+ http://www.gtk.org
Les templates API STL
Les liens
Les liens
Une petite liste de liens :
stl http://www.sgi.com/tech/stl/ C++ http://www.cplusplus.com/ faq C++http://www.parashift.com/c++-faq-lite/index.html gtkmm http://www.gtkmm.org gtkmm le livre : http://www.gtkmm.org/gtkmm2/docs/tutorial/html/index.html gtk+ http://www.gtk.org