Programmation en C++ Standard Library

Slides:



Advertisements
Présentations similaires
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Advertisements

Standard Template Library
Cours de Langage C Les structures

1 Programmation en C++ IO en C++/SL. 2 Sortie à l’écran Exemple: #include int main () { std::cout
Guide de l'enseignant SolidWorks, leçon 1 Nom de l'établissement Nom de l'enseignant Date.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Volée 1316 S3 Cours No 2_3 : Le nombre en 1-2H. Les fonctions du nombre  Dénombrer, énumérer, décrire une collection. Aspect cardinal  Dater, classer,
1 Programmation en C++ IO en C++/SL ● Standard Library ● Types, objets pour IO ● L'entrée de clavier ● Sortie à l'écran ● Fichiers.
1 Bonnes Pratiques ● Indentation ● Présentation ● Initialisation des variables ● Conditions ● Gestion d'erreurs ● Conventions.
ARCHITECTURE MULTITENANT CONTAINER DATABASE ET PLUGGABLE DATABASES Pr. A. MESRAR
annuités, mensualités remboursements constants VPM pendant une période ininterrompue
Cross-Plateform Cours JavaScript
Recherche Summon - HINARI (Module 3)
JAVA.
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Détection des erreurs.
Programmation en C++ IO en C++/SL
Algorithmique AU El harchaoui noureddine
Ajouter le code dans une page html
Initiation aux bases de données et à la programmation événementielle
Références.
Comprendre les valeurs
Programmation en C++ Fonctions
Javadoc et débogueur Semaine 03 Version A16.
Bddictionnairique Phase 1
Bases de programmation en Python
Principes de programmation (suite)
Tableaux à plusieurs dimensions en langage C
Algorithmique & Langage C
ToIP - Règles de Traduction de numéro.
Plan Introduction Parcours de Graphe Optimisation et Graphes
Techniques du Data Mining
Programmation en C++ IO en C++/SL
1ers pas des utilisateurs migrés
Programmation en C++ Classes
Stabilité des porteurs horizontaux (Poutres)
Cours N°10: Algorithmiques Tableaux - Matrices
Chapter 12: Structures de données
Gestion des fichiers Niv2
Programmation Android Bases De Données, SQL-lite
Structure et Services « STS » Documentation et suivi
Développement d’applications interactives
Programmation Android Première application Android
L1 Technique informatique
Révision du format des données
Assembleur, Compilateur et Éditeur de Liens
Efficacité des algorithmes
B.Shishedjiev - Informatique
Module 13 : Implémentation de la protection contre les sinistres
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
La recherche avancée.
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Module 5 : Gestion de l'accès aux ressources à l'aide de groupes
PRO1026 Programmation et enseignement
Le langage C# : Partie 1.
Arbre binaire.
Exploitation de vos données
STSWEB Rattacher Services et ARE Gestion des pondérations
Python Nicolas THIBAULT
DICTIONNAIRES (MAPS).
Type Tableau Partie 1 : Vecteurs
Les données structurées et leur traitement
Gestion des destinataires (recipients)
Problèmes multiplicatifs
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

Programmation en C++ Standard Library Chaînes (Strings) Conteneurs

Organisation Le bibliothèque standard SL est organisée en plusieurs parties. STL (Standard Template Library): Conteneurs Itérateurs Algorithmes Chaînes de caractères (Strings) Flots (Streams) Déjà expliqué dans la présentation précédente Numériques Internationalisation Ne seront pas expliquées dans ce cours

Strings Les classes de String nous permettent d'utiliser les chaînes de caractères comme les types normaux qui ne causent pas de problèmes pour l'utilisateur Différent des "string ordinaires" de type char * ou const char * Copie, l'affectation et les fonctions de comparaison, comme pour les types fondamentaux, sont déjà disponibles - sans se soucier de corruption de la mémoire Défini dans l'« header » <string> Type: std::string - la chaîne de caractères de type char

Opérations avec String Affectation ('assignment, operator ='): Taille de string ('size') : Recherche dans une chaîne ('find'): Conversion en C-string (char *): std::string s = "abcd"; std::string t = s; t += “efgh”; std::string s = "abcd"; int size = s.size(); std::string s = "abcd"; int pos = s.find("bc"); std::string s = "abcd"; char* cs = s.c_str();

STL STL = Standard Template Library Le cœur de SL Fournit une variété de classes de conteneur que répond à des besoins différents, avec plusieurs algorithmes qui fonctionnent sur eux Les programmeurs peuvent oublier la programmation des tableaux dynamiques, des algorithmes de recherche etc Il suffit de choisir le conteneur approprié et d'appeler ses méthodes pour le traitement des données Tous les composants sont des patrons ('templates') Peuvent être utilisés avec des types arbitraires Extrêmement efficace La coopération des différentes composantes est bien-structurée : Les conteneurs, itérateurs et algorithmes

Conteneurs Gérent une collection d'éléments Ordonnés ('Sequence') = collections ordonnées dans lesquelles chaque élément a une certaine position (indépendante de la valeur) Vecteur ('vector') : 1 dimensional array Liste ('list'): liste doublement chainée Associative = collections triés (la position réelle d'un élément dépend de sa valeur) Set / Multiset: Élément classés en fonction de leur propre valeur Map / Multimap: Les éléments sont paires clé / valeur, classés en fonction de valeur de la clé

Vector Dans le 'header' <vector> Type: std::vector<T> - où T est le type d'élément Des fonctions utiles: push_back(elem) Ajouter un élément à la fin at(idx) ou [idx] Retour de idx-ème élément front(), back() Retour de le premier, le dernier élément size() Retour de la taille de vecteur clear() Supprimer tous les éléments #include <iostream> #include <vector> int main () { std::vector<int> myVector; myVector.push_back(3); myVector.push_back(4); std::cout << myVector[0] << std::endl; myVector.at(1) = 5; std::cout << myVector.back() << std::endl; myVector.clear(); return 0; }

List Dans le 'header' <list> Type: std::list<T> - où T est le type d'élément Des fonctions utiles: push_front(elem), push_back(elem) Ajouter un élément au début, à la fin pop_front(), pop_back() Enlever l'élément au début, à la fin front(), back(), size(), clear() Même comme pour vector #include <iostream> #include <list> int main () { std::list<int> myList; myList.push_front(3); myList.push_front(2); myList.push_back(4); myList.pop_front(); myList.pop_back(); std::cout << myList.front() << std::endl; std::cout << myList.back() return 0; } Certaines méthodes sont communes à la fois au vecteur et a la liste (et aussi aux autres conteneurs): size (), clear (), ...

Itérateurs Itérateur ('iterator') = objet qui peut "parcourir" (naviguer parmi) les éléments Il représente une certaine position dans un conteneur Tous les conteneurs fournissent les mêmes fonctions de base qui permettent aux itérateurs de naviguer parmi leurs éléments Les fonctions définies pour tous les conteneurs: begin(), end() Retour d'un itérateur, qui représente le commencement, la fin des éléments dans le conteneur. La fin est la position derrière le dernier élément v.begin() v.end() T vector it

Itérateurs L'« header »: Tous les conteneurs définissent leur propre type d'itérateur, il n'y a pas d '« header » spécial pour l'utilisation des itérateurs Types: container_type::iterator container_type::const_iterator Opérations de base: Operator * Renvoie l'élément de la position actuelle Operator ++ Permet à l'itérateur de passer à un autre élément Operators == and != Renvoie le résultat si deux itérateurs représentent la même position ou non Operator = Attribuer un itérateur (la position de l'élément auquel il se réfère)

Itérateurs - Exemple #include <iostream> #include <vector> int main() { std::vector<int> myVector; // ... fill the vector here // Iterating over vector elements std::vector<int>::iterator it; for ( it = myVector.begin(); it != myVector.end(); ++it ) { int i = *it; std::cout << "i = " << i << std::endl; } return 0;

Quand utiliser le quel conteneur Vector Par défaut, vous devez utiliser un vecteur Si vous avez besoin d'accéder au N-ème élément L'insertion et le retrait peuvent être coûteux Très efficace lorsque vous naviguez sur le conteneur List Si vous avez souvent besoin d'insérer ou de retirer un élément en plein milieu du conteneur L'insertion a lieu à temps constant L'accès au N-ème élément par itération à partir du 1er Map Si vous avez besoin d'un élément via une clé Une liste triée maintenue lors de l'insertion de nouveaux éléments Liste associative