La programmation g - PowerPoint PPT Presentation

About This Presentation
Title:

La programmation g

Description:

Les concepts de g n ricit : re-encore nouveau un autre rappel, mais a finira ... Enfin:les trucs qu'il faut comprendre ( ou en tout cas retenir ) pour ... – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Slides: 17
Provided by: Popi6
Category:

less

Transcript and Presenter's Notes

Title: La programmation g


1
La programmation génériqueavec la STL
EIUMLV - Informatique et Réseaux 99
Benoît ROMAND
2
Ce dont on va parler
  • Les concepts de généricité re-encore à nouveau
    un autre rappel, mais ça finira par rentrer!
  • La Standard Template Library
  • avec les concepts, des exemples, et tout ce qui
    va bien
  • Enfinles trucs quil faut comprendre ( ou en
    tout cas retenir ) pour le projet

3
Programmation générique les motivations
  • La principale la flemme
  • La réutilisation du code ( cf. premier point )
  • La facilité décriture
  • La lisibilité du code

4
The schéma, par Stepanov et Lee
  • Les algorithmes sont indépendants du type de
    données stockées
  • Il sagit ainsi de connecter des algorithmes à
    des structures de données, par le biais de
    connecteurs.

5
La STL
  • Application directe des concepts développés par
    Stepanov
  • Il sagit dune bibliothèque dalgorithmes
    généraux et de structures de données
  • Des containers
  • - de séquence
  • - associatifs
  • Des algorithmes
  • - sort, find, search,
  • - copy, swap, for_each,
  • Des itérateurs
  • adaptés aux types de container

6
STL - Les containers de séquence
  • Vector
  • - extensible et relocalisable
  • - accès aléatoire par index en O(1)
  • - insertions et retraits à la fin en O(1)
  • - insertions et retraits lents au milieu
  • List ( liste circulaire doublement chaînée )
  • - insertions et retraits nimporte où en O(1)
  • - accès au début et à la fin en O(1)
  • - accès lent aux autres éléments
  • Deque ( Double Ended Queue tampon circulaire
    dynamique )
  • - exactement pareil que Vector pour la
    complexité
  • - pas dinsertion au milieu
  • - bon compromis vitesse daccès / souplesse du
    remplissage

7
STL - Les containers associatifs
  • Set ( liste triée )
  • - Chaque élément doit être unique ( pas de
    doublons )
  • - accès aléatoire par clé ( lobjet lui-même
    est la clé )
  • Multiset
  • - Un set qui permet les doublons
  • Map ( association clé / élément )
  • - une clé pour un élément ( pas de doublons )
  • - accès aléatoire par clé
  • Mulimap
  • - Un map ou les éléments peuvent être
    multiples pour une clé

8
STL Les itérateurs
  • L'itérateur est une généralisation des pointeurs.
    . Il permet de parcourir en séquence les éléments
    d'un conteneur.
  • Hiérarchie des itérateurs

Ecriture
Lecture
Forward
It
Bidirectionnel
It, It--
Accès aléatoire
Itn, It-n
9
STL petits exemples (1)La copie
  • void main()
  • listltintgt l(4,0) // l vaut 0000
  • vectorltintgt v(10,1) // v vaut
    1,1,1,1,1,1,1,1,1,1,1
  • vectorltintgtiterator i copy(l.begin(),l.end()
    ,v.begin())
  • copy(v.begin(),i, ostream_iteratorltintgt(cout,"
    "))
  • copy(i,v.end(), ostream_iteratorltintgt(cout,"
    "))

10
STL petits exemples (2)Le tri
  • include ltiostreamgt
  • include ltlistgt
  • includeltalgorithmgt
  • Listltchargt initC(charc)
  • Listltchargt majax
  • while (c ! \0 majax.push_back(c)
  • return majax
  • void main()
  • Listltchargt gerard initC("le plus grand et le
    plus fort des magiciens")
  • gerard.sort()
  • gerard.unique()
  • for (Listltchargtiterator i gerard.begin() i
    ! gerard.end() i) cout ltlt i

11
STL Autre notion ladaptateur (1)
  • Adaptateur de container
  • Pour résumer
  • Adaptateur lt Conteneur lt Truc gt gt
  • Stack ( la pile )
  • Peut être implémentée avec Vector, List, Deque
  • Principe LIFO push et pop à la même extrémité
  • Queue ( la file )
  • Peut être implémentée avec List, Deque
  • Principe FIFO
  • Priority_queue ( la file par priorité )
  • Dépend dune fonction de comparaison
  • priority_queuelt Conteneur lt Truc gt , fcomp lt
    Truc gt gt

12
STL Autre notion ladaptateur (2)
  • Adaptateurs ditérateurs
  • Litérateur inverse
  • void main()
  • int arr 1,4,9,16,25
  • listltintgt liste(arr, arr5)
  • listltintgtreverse_iterator revit
  • revit liste.rbegin()
  • while (revit ! liste.rend()) cout ltlt revit

13
STL Autre notion ladaptateur (3)
  • Litérateur dinsertion
  • void main()
  • int t1 1, 3, 5, 7, 9
  • dequeltintgt dq1(t1,t15)
  • int t2 2, 4, 6
  • dequeltintgt dq2(t2,t23)
  • copy(dq1.begin(), dq1.end(), back_inserter(dq2))
  • for (int i0 iltdq2.size() i) cout ltlt dq2i
    ltlt

14
STL pour finir les foncteurs
  • Abstraction de la notion de fonction.
  • Foncteur Objet dont la classe définit
    lopérateur () , appelé opérateur de fonction
  • Permettent dappliquer des fonctions sur les
    objets manipulés

include ltiostreamgt include ltfunctionalgt templat
e ltclass T, class Fgt T applique(T i, T j, F
foncteur) return foncteur(i, j) void
main(void) plusltintgt foncteur_plus cout ltlt
applique(2, 3, foncteur_plus) ltlt endl
15
La suite sur le site Web
16
Parlons voir de Ookce
  • 1 les concepts de généricité ne sappliquent
    pas seulement au c
  • 2 on a le droit de les appliquer
  • 3 le joli schéma de Stepanov peut être
    généralisé on sait à quoi ressemble lobjet
    avec lequel on veut discuter et ce quil doit
    faire, mais on ne sait pas comment il fait ce
    quil fait ( et on plus ce nest pas notre
    problème )
  • En gros, si lobjet cible change, on lui
    demande simplement de garder la même apparence.
    Comme ça, on na pas besoin de recommencer tout
    notre code
  • 4 cest très chiant au début, mais ça facilite
    la vie après
Write a Comment
User Comments (0)
About PowerShow.com