SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
C++ Templates & STL
     Bologna, 1/12/2011
Templates
• Immaginate di dover scrivere una semplice
  funzione :
              f a , b=ab

Il modo in cui implementerete questa
funzione dipende dal TIPO delle variabili
coinvolte.
Templates
Scriviamo 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 che
dobbiamo usare.
Il meccanismo di “OVERLOADING” in C++
permette di fare questo ma esiste un modo
molto piu' efficace.
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
Templates
E` il compilatore che genera le diverse funzioni volute
per i diversi tipi che possono essere anche CLASSI.
L'unica cosa richiesta in questo caso e' che l'operatore
+ sia definito per i tipi richiesti. In alcuni casi lo puo' fare
anche 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);
Templates
template <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;}
};
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.
STL
• In questa lezione vedremo solo alcuni
  esempi significativi rimandando ai testi e siti
  di riferimento una trattazione piu' completa.
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
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 all'inizio.
• Una LIST è un container sequenziale ove
  ciascun elemento ha puntatori al
  precedente e al successivo.
STL containers
• Un set e un multiset sono container fatti in
  modo che indipendentemente dal'ordine
  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.
STL
• Oltre a ciò:
  – Algoritmi ( for_each, search, sort, insert....)
  – Container speciali ( code, stacks....)
  – Stringhe
  – Template Numerici ( complex, valarray )

    http://www.cplusplus.com/reference/
Giuseppe Levi
Dipartimento di Fisica
 www.giuseppelevi.it

     www.unibo.it

Mais conteúdo relacionado

Semelhante a Template

Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2STELITANO
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
lezione1.pdf
lezione1.pdflezione1.pdf
lezione1.pdfdttdigi
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseFelice Pescatore
 
Linked data parliamo di semantica del web - v3
Linked data   parliamo di semantica del web - v3Linked data   parliamo di semantica del web - v3
Linked data parliamo di semantica del web - v3Riccardo Grosso
 
Open web programming
Open web programmingOpen web programming
Open web programmingnois3lab
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStudiabo
 

Semelhante a Template (20)

Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
Dispensa di PL-SQL
Dispensa di PL-SQLDispensa di PL-SQL
Dispensa di PL-SQL
 
06 3 struct
06 3 struct06 3 struct
06 3 struct
 
What's new in C# 7
What's new in C# 7What's new in C# 7
What's new in C# 7
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
Corso Java
Corso JavaCorso Java
Corso Java
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
06 2 vector_matrici
06 2 vector_matrici06 2 vector_matrici
06 2 vector_matrici
 
lezione1.pdf
lezione1.pdflezione1.pdf
lezione1.pdf
 
Oracle PL sql 1
Oracle PL sql 1Oracle PL sql 1
Oracle PL sql 1
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
 
Pe t4 perl-oggetti
Pe t4 perl-oggettiPe t4 perl-oggetti
Pe t4 perl-oggetti
 
Linked data parliamo di semantica del web - v3
Linked data   parliamo di semantica del web - v3Linked data   parliamo di semantica del web - v3
Linked data parliamo di semantica del web - v3
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
Open web programming
Open web programmingOpen web programming
Open web programming
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
 

Último

Piccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxPiccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxpalestiniaurora
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024IISGiovanniVallePado
 
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptxPancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptxpalestiniaurora
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointpalestiniaurora
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxteccarellilorenzo
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxsasaselvatico
 
presentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptxpresentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptxmichelacaporale12345
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxpalestiniaurora
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxpalestiniaurora
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPDamiano Orru
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxpalestiniaurora
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxteccarellilorenzo
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda prespalestiniaurora
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...Nguyen Thanh Tu Collection
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxpalestiniaurora
 

Último (20)

Piccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxPiccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docx
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptxPancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
Pancia Asia-Pelusi Sara-La pittura romana - Copia (1).pptx
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpoint
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
presentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptxpresentazione varietà allotropiche del carbonio.pptx
presentazione varietà allotropiche del carbonio.pptx
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docx
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docx
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAP
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda pres
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docx
 

Template

  • 1. C++ Templates & STL Bologna, 1/12/2011
  • 2. Templates • Immaginate di dover scrivere una semplice funzione : f a , b=ab Il modo in cui implementerete questa funzione dipende dal TIPO delle variabili coinvolte.
  • 3. Templates Scriviamo 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 che dobbiamo usare. Il meccanismo di “OVERLOADING” in C++ permette di fare questo ma esiste un modo molto piu' efficace.
  • 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. Templates E` il compilatore che genera le diverse funzioni volute per i diversi tipi che possono essere anche CLASSI. L'unica cosa richiesta in questo caso e' che l'operatore + sia definito per i tipi richiesti. In alcuni casi lo puo' fare anche 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. Templates template <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. 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. STL • In questa lezione vedremo solo alcuni esempi significativi rimandando ai testi e siti di riferimento una trattazione piu' completa.
  • 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. 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 all'inizio. • Una LIST è un container sequenziale ove ciascun elemento ha puntatori al precedente e al successivo.
  • 11. STL containers • Un set e un multiset sono container fatti in modo che indipendentemente dal'ordine 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. 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. Giuseppe Levi Dipartimento di Fisica www.giuseppelevi.it www.unibo.it