1 Listes des méthodes de la classe string, et exemples.

Slides:



Advertisements
Présentations similaires
Erratum C Surcharge For(int x=0; … 2.
Advertisements

Cours n° 7 Standard Template Library II.
Cours n° 6 Standard Template Library I.
Piles, files et listes: notions théoriques
Portée des variables VBA & Excel
C++ 6ème cours Patrick Reuter maître de conférences
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours n° 9 Conception et Programmation à Objets
Cours n° 8 Conception et Programmation à Objets
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Approfondissement du langage
(Classes prédéfinies – API Java)
C.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Chap. 1 Structures séquentielles : listes linéaires
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
Bibliothèque standard du C++
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Methode de Tri efficace
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Standard Template Library (STL)
Structures de données IFT-2000
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Traiter des Données avec la STL
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers indexés (Les B-arbres)
Structures de données IFT Abder Alikacem La classe vector Édition Septembre 2009 Département dinformatique et de génie logiciel.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Conteneurs STL.
Une nouvelle structure de données : les tableaux
Rappels Java.
Présentation Structures de Données et TDA
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Plan cours La notion de pointeur et d’adresse mémoire.
Structures de données IFT-2000
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
Structures de données IFT-2000
Le langage C Structures de données
2.1 - Historique Chapitre 2 : Introduction au langage C++
La notion de type revisitée en POO
Argc et argv Utilisation des paramètres de la ligne de commande.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
ETNA – 1ème année Guillaume Belmas –
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Cours LCS N°4 Présenté par Mr: LALLALI
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
IUT du limousin L.U.P Michel Vergnaud Programmation Objet - Java.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Structures de données IFT-2000 Abder Alikacem Standard Template library Semaine 5 Édition Septembre 2009 Département d’informatique et de génie logiciel.
3ième Classe (Mardi, 23 Septembre) CSI2572. O jourd'8: E Allocation de mémoire E Déallocation de mémoire E Tableaux (n dimensions) E Arithmetique des.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

1 Listes des méthodes de la classe string, et exemples

2

3

4 #include using namespace std; int main () { string str = "Hello"; cout << "str is : " << str << endl; str += ","; str += ' '; cout << "str is : " << str << endl; string s; s = str + "World"; cout << "s is : " << s << endl; char ch = '!'; s += ch; cout << "s is : " << s << endl; return 0; } OUTPUT: // str is : Hello // str is : Hello, // s is : Hello, World // s is : Hello, World!

5 STL vector et list Les tableaux (vector) La classe vector est définie dans le fichier d'entête : #include Le tableau est le conteneur le plus pratique de la STL. Il encapsule efficacement les tableaux dynamiques en gérant la réallocation et les recopies. Un tableau connait 2 valeurs: sa taille: le nombre d'éléments qu'il contient, sa capacité: le nombre d'éléments qu'il peut contenir. Quand l'ajout d'un élément entraîne (taille>capacité) alors le tableau se réalloue en doublant sa capacité (stratégie classique). Pour déclarer un tableau contenant des int, on utilisera : vector v; Le tableau a alors une taille nulle (on ne s'occupe pas de sa capacité). Pour ajouter des éléments, on peut utiliser push_back,push_front.

6 Méthodes Description begin() renvoie un itérateur sur le premier élément du vecteur. end() renvoie un itérateur sur le dernier élément du vecteur. assign() remplit le vecteur à la manière des constructeurs : b.assign(a.begin(),a.end()) ; ceci rempli le vecteur b avec le contenu du vecteur a. Une autre utilisation de assign() : b.assign(10,0) ; rempli les dix premiers élément avec la valeur 0. at() renvoie l’élément situé à la ième position : a.at(10) ; renvoie l’élément situé à la 11ième position (les vecteurs commencent à l’indice 0)

7 front() renvoie le premier élément du vecteur (ne renvoie pas un itérateur). back() renvoie le dernier élément du vecteur (ne renvoie pas un itérateur). capacity() renvoie le nombre de case mémoire disponible avant de réallouer de la mémoire clear() supprime tous les éléments du vecteur. empty() renvoie un booléen indiquant si le vecteur est vide (true) ou non (false) erase() Supprime un élément ou une plage de valeur : a.erase(10) ; //supprime le 11ème élément. a.erase(a.begin(),a.end()) ; // equivalent à a.clear() ; insert() insère un ou plusieurs éléments dans un vecteur. a.insert(10,2) ; //insère la valeur 2 à la 11 ème place. a.insert(10,2,3) ; //insère 2 fois la valeur 3 à partir de la 11ème position. pop_back() supprime et renvoie le dernier élement du vecteur.

8 push_back() insère un élément à la fin du vecteur. reserve() ajoute n cases mémoires au vecteur. resize() change la taille du vecteur. size() renvoie le nombre d’élément du tableau (attention différent de capacity() ) swap() échange deux éléments de deux vecteurs.

9 Pour accéder directement aux éléments d'un tableau, en lecture ou en écriture, on utilise la notation [] classique: #include using namespace std; int main(){ vector v; v.push_back(3); // le tableau vaut [3] et est de taille 1 v.push_front(4); // le tableau vaut [4,3] et est de taille 2 cout<<v[0]; // renvoie 4 v[1] = 5; cout<<v[1]; // renvoie 5 }

10 Attention, aucun contrôle de dépassement d'indice n'est effectué (sinon la classe serait trop lente et pas assez générique). Si vous tentez d'accéder un élément au delà de la taille du tableau, vous risquez le plantage

11 La notion d'itérateur L'itérateur est une généralisation des pointeurs. Il permet de parcourir en séquence les éléments d'un conteneur. Pour comprendre l'analogie, regardons le code C classique suivant: void lower(char* t,const unsigned int& taille) { for(unsigned int i=0;i<taille;++i) { t[i] = lowercase(t[i]); /(***) }

12 Afin d'optimiser un tel parcours de tableau (pour éviter,à la ligne (***), de calculer deux fois un déplacement de i par rapport à l'adresse de base de t), les programmeurs C ont l'habitude de remplacer ce code par le code suivant: void lower(char* t,const unsigned int& taille){ for(char *p = t,*pstop = t+taille;p < pstop;++p) { *p = lowercase(*p); }}

13 Un itérateur, ça correspond au pointeur p. Ca "pointe"sur un objet, et ça sait passer à l'objet suivant dans le conteneur. Un itérateur est donc lié à conteneur en particulier. Il a notamment besoin de connaître le type des objets du conteneur (pour avoir la taille et savoir "passer au suivant").

14 Pour cela, le type iterator est un type membre des classes conteneurs (c'est ce que l'on appelle un trait). La déclaration d'un itérateur sur un vector d'entiers se fait donc de la manière suivante: vector ::iterator i; Pour que cette itérateur pointe sur le premier élément d'un vector donné, on utilise la méthode begin() de cet vector comme ci-dessous: vector v; vector ::iterator i = v.begin();

15 Ainsi la traduction en STL de l'exemple donné en introduction est: void lower(vector & t){ for (vector ::iterator i = t.begin(),istop=t.end(); i != istop;++i) { *i = lowercase(*i); }} L'itérateur end() est en fait assez spécial. Il pointe sur "après" le dernier élément du conteneur.

16 Les listes (list) La classe list est définie dans le fichier d'entête : #include Pour déclarer une liste contenant des int, on utilisera : list l;

17 Pour insérer ou retirer des éléments dans la liste, on utilisera les commandes suivantes: #include using namespace std; void main(){ list l; l.push_front(3); // la liste vaut 3::[] l.push_front(2); // la liste vaut 2::3::[] l.push_back(4); // la liste vaut 2::3::4[] l.pop_front(); // la liste vaut 3::4[] l.pop_back(); // la liste vaut 3::[]}

18 Les fonctions pop_back et pop_front ne retournent pas de valeurs. Elles ne font que dépiler la valeur de queue ou de tête. Pour accéder à la valeur de queue ou de tête, sans les dépiler, on utilisera: l.front(); // Retourne la valeur en tête de liste l.back(); // Retourne la valeur en queue de liste Il est à noter que ces 2 fonctions retournent des références, c'est à dire qu'on peut s'en servir pour modifier le premier où le dernier élément d'une liste comme dans l'exemple ci-dessous: l.front() = 4;

19 Les méthodes: size_t size() const;  Nombre d’élément. void push_back(const T& x);  Ajoute l’élément x en fin de liste. void pop_back();  Supprime le dernier élément de la liste. iterator insert(iterator position, const T& x);  Insert l’élément x devant l’élément désigné par position. iterator insert(iterator position);  Insert un élément construit par défaut devant l’élément désigné par position. void insert(iterator position, const_iterator first, const_iterator last);  Insert une séquence d’élément désigné par first et last devant l’élément désigné par position. iterator erase(iterator position);  Efface l’élément à la position donnée. iterator erase(iterator first, iterator last);  Efface les éléments entre first et last exclus. void clear();  Efface tous les éléments de la list.

20 Les méthodes spécifique à la classe List: void remove(T valeur)  Supprime tous les éléments égaux à valeur. void sort()  Tri la liste dans l’ordre croissant. void unique()  Elimine les éléments en double dans une liste triée. void merge(const list )  Fusionne la liste list avec la liste concernée. A la fin de l’opération, list est vide.