Bibliothèque standard du C++

Slides:



Advertisements
Présentations similaires
Chap. 4 Recherche en Table
Advertisements

Erratum C Surcharge For(int x=0; … 2.
Cours n° 7 Standard Template Library II.
Cours n° 6 Standard Template Library I.
Introduction au langage C++
Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
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
JAV - TD 6 Structures de données JAVA
Leçon 3 : Héritage IUP 2 Génie Informatique
Utilisation des tableaux
Structures collectives en Java
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
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
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Traiter des Données avec la STL
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.
Structures de données IFT-2000
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 La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
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.
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Conteneurs STL.
Rappels Java.
8PRO107 Éléments de programmation Les fonctions. La bibliothèque standard du C/C++ Il y a peu d'opérateurs arithmétiques en C/C++, mais à partir de ceux.
Chapitre 9 Les sous-programmes.
Types de données abstrait et mécanismes d'encapsulation
1 Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que.
Standard Template Library
C++ : fonctions et opérateurs
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000
Rappel... Matrices bloc. Décomposition des matrices:
Structures de données IFT-10541
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 4 Polymorphisme II.
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
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.
Structures de données IFT-2000
Structures de données IFT-2000
Chapitre X Modèles.
La notion de type revisitée en POO
Héritage multiple En langage C++, il est possible d’utiliser l’héritage multiple. Il permet de créer des classes dérivées à partir de plusieurs classes.
Templates, Containers et STL Structures de données de base tableau, liste chaînée file, pile, arbres, hashtable collection, ensemble 2 caractéristiques.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Tutorat en bio-informatique
ETNA – 1ème année Guillaume Belmas –
Les surcharges d'opérateurs
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Structures de données IFT-2000
1 Listes des méthodes de la classe string, et exemples.
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
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.
Transcription de la présentation:

Bibliothèque standard du C++ Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier

STL Intérêt Généricité Implantation dynamique d ’une pile surcharge de l ’opérateur = surcharge du constructeur par copie Implantation : chaînage arrière

Des structures de données classiques La bibliothèque standard (Standard Template Library : STL) fournit au programmeur des classes prédéfinies qui offrent des structures de données classique, associées à leurs opérations classiques. Facteurs de qualité des logiciels : Fiabilité : écrite par des spécialistes (Andrew Koenig) Réutilisabilité : portabilité Compréhensabilité et facilité de maintenance => EFFICACITE

Des composants réutilisables Développer rapidement des applications en assemblant des briques des classes génériques. Exemple : Fusionner deux listes en les triant et placer le résultat dans un fichier se code en deux lignes.

Conteneurs (template) http://www.sgi.com/tech/stl/ Pour comprendre les conteneurs proposés dans la STL, on doit appréhender à la fois les structures de données, les algorithmes associés et les itérateurs. Il existe deux grandes catégories de conteneurs : Les séquences élémentaires (appelées aussi stockages élémentaires). Les dérivées des séquences élémentaires (appelées aussi types abstraits de données : TDA) Les conteneurs associatifs (clé,valeur)

Des composants réutilisables Chaque conteneur possède possède des avantages et des inconvénients qui peuvent être appréhendés selon ces critères : coût des insertions/suppressions coût des accès aux éléments On choisira un conteneur en cherchant à minimiser la somme des coûts des opérations les plus fréquentes effectués sur ceux-ci. => voir la complexité des algorithmes (opérations)

Les séquences Une séquence est un conteneur dans lequel les éléments sont organisés linéairement (il y a un premier, un suivant … , un dernier). On distingue trois séquences : vector (tableau) list (liste) deque (liste à accès préférentiels au premier et dernier)

Les vecteurs # include <vector.h> # include <vector.h> # include <iostream.h> using namespace std; int main (void) { vector<int> v; V1.push_back(1); V1.push_back(2); V1.push_back(3); vector<int> v2(3); v2[0] = 1, v2[1] = 2; v2[2] =3; if (v1==v2) cout << " OK " ; else cout << " ???? (stupeur) "; return 0; }

Les séquences : opérations communes Méthodes disponibles sur tout conteneur : Gestion de la taille du conteneur - size_type size() const; - size_type max_size() const; - bool empty() const; - void resize(size_type, T c=T()); Accès aux éléments : - const_reference front() const; - const_reference back() const;

Les séquences : opérations communes Méthodes disponibles sur tout conteneur : Insertion des éléments - void push_back(const T&); appel du constructeur par copie - .. . insert (...); avec un itérateur Suppression d ’éléments : - void pop_back(); - .. . erase (...); avec un itérateur Echange d ’éléments : - void swap(sequence<T>&);

Les séquences : opérations communes Méthodes disponibles sur tout conteneur : Echange d ’éléments : - void swap(sequence<T>&); Sequence est à remplacer par vector, list ou deque. Echange this avec les éléments du conteneur passé en argument. Pour échanger des éléments de séquences différentes, il faut passer à une version avec itérateur

Les vecteurs Principales opérations (n est la dimension du vecteur) Sélecteur => capacité mémoire réservée donnée en nombre d ’éléments size_type capacity() const; Rqe : la taille est donnée par size (=> nb d ’éléments) Sélecteur : accès indexé : [ ] 0(1) reference operator[](size_type)

Les vecteurs Principales opérations (n est la dimension du vecteur) Ajout ou suppression d ’un élément en fin de vecteur sans redimensionnement 0(1) push_back Ajout ou suppression d ’un élément en fin de vecteur avec redimensionnement 0(n) push_back Ajout ou suppression d ’un élément au milieu du vecteur 0(n)

Les conteneurs associatifs Un conteneur associatif offre la possibilité de rechercher rapidement les éléments mémorisés par leur clé. Contrairement aux séquences, les conteneurs associatifs peuvent identifier leurs éléments par la valeur d ’une clé. Cette clé a parfois pour valeur une partie de la valeur de l ’élément. Ces conteneurs sont particulièrement adaptés dans des applications où l ’on doit rechercher des éléments connaissant leur clé.

Les conteneurs associatifs Ces conteneurs sont « paramétrés » avec le type de la clé correspondant. . On doit avoir une relation d ’ordre total sur les clés Opérations sur les clés : recherche : find (complexité logarithmique) Comptage selon la clé : count

Les conteneurs associatifs On trouve quatre conteneurs associatifs set : clé = valeur de l ’élément multiset : set avec occurrences multiples map : élément = (clé,v) multimap : map avec occurrences multiples sur clé Opérations utilisant les clés : recherche : find (complexité logarithmique) Comptage selon la clé : count