C++ Templates & STL     Bologna, 1/12/2011
Templates• Immaginate di dover scrivere una semplice  funzione :              f a , b=abIl modo in cui implementerete q...
TemplatesScriviamo una funzione per i float:float f(float a, float b){return a+b;}Una per gli interi:int f(int a, int b){r...
Templates• I Templates sono funzioni o classi ove il  TIPO di alcune variabili NON e specificato  quando vengono definite ...
TemplatesE` il compilatore che genera le diverse funzioni voluteper i diversi tipi che possono essere anche CLASSI.Lunica ...
Templatestemplate <class T>class mypair {     T a, b;    public:     mypair (T first, T second)      {a=first; b=second;} ...
STL• STL significa: Standard Template Library• E` una vasta libreria disponibile in ogni  sistema operativo e tutti i comp...
STL• In questa lezione vedremo solo alcuni  esempi significativi rimandando ai testi e siti  di riferimento una trattazion...
STL containers• Tramite i containers possiamo strutturare i  dati. E una operazione che già fate quando  riempite un vetto...
STL containers• Il VECTOR e il DEQUE dono container  che possono dare a tipi generici di dati,  quindi anche oggetti, la s...
STL containers• Un set e un multiset sono container fatti in  modo che indipendentemente dalordine  con cui sono stati ins...
STL• Oltre a ciò:  – Algoritmi ( for_each, search, sort, insert....)  – Container speciali ( code, stacks....)  – Stringhe...
Giuseppe LeviDipartimento di Fisica www.giuseppelevi.it     www.unibo.it
Upcoming SlideShare
Loading in...5
×

Template

2,632

Published on

t

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,632
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
45
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Template

  1. 1. C++ Templates & STL Bologna, 1/12/2011
  2. 2. Templates• Immaginate di dover scrivere una semplice funzione : f a , b=abIl modo in cui implementerete questafunzione dipende dal TIPO delle variabilicoinvolte.
  3. 3. TemplatesScriviamo una funzione per i float:float f(float a, float b){return a+b;}Una per gli interi:int f(int a, int b){return a+b;}….. ecosi` via per ogni tipo di dato chedobbiamo usare.Il meccanismo di “OVERLOADING” in C++permette di fare questo ma esiste un modomolto piu efficace.
  4. 4. Templates• I Templates sono funzioni o classi ove il TIPO di alcune variabili NON e specificato quando vengono definite ma solo quando vengono usate in un codice. In questo caso la funzione viene definita:template <class B,class T >B f(T a, T b) { return a+b ;}• Nel main viene usata per esempio:f<float,int>(a,b) // somma due interi ritorna un float
  5. 5. TemplatesE` il compilatore che genera le diverse funzioni voluteper i diversi tipi che possono essere anche CLASSI.Lunica cosa richiesta in questo caso e che loperatore+ sia definito per i tipi richiesti. In alcuni casi lo puo fareanche partendo dalla lista delle variabili.template <class T >T f(T a, T b) { return a+b ;}Nel main:float a,b;cout << f(a,b);
  6. 6. Templatestemplate <class T>class mypair { T a, b; public: mypair (T first, T second) {a=first; b=second;} T getmax (){ T retval; retval = a>b? a : b; return retval;}};
  7. 7. STL• STL significa: Standard Template Library• E` una vasta libreria disponibile in ogni sistema operativo e tutti i compilatori.• NE STATE GIA` USANDO UNA PARTE: #include <iostream> fa parte delle STL nella sezione generale di I/O & stream classes.
  8. 8. STL• In questa lezione vedremo solo alcuni esempi significativi rimandando ai testi e siti di riferimento una trattazione piu completa.
  9. 9. STL containers• Tramite i containers possiamo strutturare i dati. E una operazione che già fate quando riempite un vettore o una matrice di numeri.• I principali tipi di containers che possiamo usare sono:• vector, deque, list, chiamati SEQUENZIALI• set, multiset, map, chiamati ASSOCIATIVI
  10. 10. STL containers• Il VECTOR e il DEQUE dono container che possono dare a tipi generici di dati, quindi anche oggetti, la struttura di un vettore, ove ciascun elemento è accessibile tramite un indice. Nel DEQUE gli elementi possono essere aggiunti anche allinizio.• Una LIST è un container sequenziale ove ciascun elemento ha puntatori al precedente e al successivo.
  11. 11. STL containers• Un set e un multiset sono container fatti in modo che indipendentemente dalordine con cui sono stati inseriti, gli elementi vengono letti in modo ordinato.• In una map si associa una chiave al contenuto di ciascun elemento. In lettura questi sono ordinati in base alla chiave.
  12. 12. STL• Oltre a ciò: – Algoritmi ( for_each, search, sort, insert....) – Container speciali ( code, stacks....) – Stringhe – Template Numerici ( complex, valarray ) http://www.cplusplus.com/reference/
  13. 13. Giuseppe LeviDipartimento di Fisica www.giuseppelevi.it www.unibo.it
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×