Modifiche recenti - Cerca:

Categorie

Pagine utente

Winzipedia

Uso dell'wiki

modifica il menu

Informatica3.STL Versioni

Nascondi le modifiche minori - Mostra le modifiche

Modificate le linee 2-3: da:
'''Autore:''' [[Profiles.Tommaso | Tommaso Bonetti]]\\
a:
'''Autore:''' [[Profiles.Tommaso | Tommaso Bonetti]]
18/06/2006 ore 18:32 CEST di 81.211.233.44 -
Modificate le linee 2-4: da:
'''Autori: Tommaso Bonetti'''\\
a:
'''Autore:''' [[Profiles.Tommaso | Tommaso Bonetti]]\\
18/06/2006 ore 18:31 CEST di 81.211.233.44 -
Modificate le linee 2-4: da:
'''Autori: Tomamso Bonetti'''\\
a:
'''Autori: Tommaso Bonetti'''\\
18/06/2006 ore 18:30 CEST di 81.211.233.44 -
Modificata la linea 148: da:
#capire come mai il mio scritto diventato lunghissimo... almeno io lo vedo di una rarghezza incredibile, le righe vanno a capo solo quando finiscono...
a:
#capire come mai il mio scritto diventato lunghissimo... almeno io lo vedo di una rarghezza incredibile, le righe vanno a capo solo quando finiscono... ( risolto, son troppo figo)
18/06/2006 ore 18:29 CEST di 81.211.233.44 -
Modificate le linee 6-17: da:
a:
*Introduzione
*Descrizione
*Un passo indietro: cosa si intende per template
* programmare con le STL
*Iteratori
*Contenitori
*Vector
*List
*Contenitori associativi: map<K, T, Compare>
*Stringhe
*da fare
Modificate le linee 39-41: da:
# quando si vuole implementare la parte invariante di un algoritmo una volta sola e lasciare che le sottoclassi implementino il comportamento che variare
# per avere modo di controllare come le sottoclassi ereditano dalla superclasse, facendo in modo che i metodi template chiamino dei metodi "gancio" (hook) e impostarli come unici metodi sovrascrivibili.
a:
# quando si vuole implementare la parte invariante di un algoritmo una volta sola e lasciare che le sottoclassi implementino il comportamento che variare
# per avere modo di controllare come le sottoclassi ereditano dalla superclasse, facendo in modo che i metodi template chiamino dei metodi "gancio" (hook) e impostarli come unici metodi sovrascrivibili.
18/06/2006 ore 18:15 CEST di 81.211.233.44 -
Modificate le linee 134-138: da:
*substr() = " Ritorna una certa sottostringa"
a:
*substr() = " Ritorna una certa sottostringa"

!!da fare
#capire come mai il mio scritto diventato lunghissimo... almeno io lo vedo di una rarghezza incredibile, le righe vanno a capo solo quando finiscono...
# fare la parte sugli algoritmi di cui non ci ho capito molto
18/06/2006 ore 18:11 CEST di 81.211.233.44 -
Aggiunte le linee 1-134:
!Standard Template Library
'''Autori: Tomamso Bonetti'''\\


->'''Sommario'''




!!Introduzione



!!Descrizione

La STL costituisce uno strato software ormai divenuto fondamentale per i programmatori C++, cui fornisce un set precostituito di classi comuni, come container e array associativi, che hanno la caratteristica di poter operare con qualsiasi tipo di dato, sia primitivo che definito dall'utente, richiedendo allo sviluppatore nel contratto il rispetto di pochi vincoli (ad esempio, l'implementazione di operatori o funzioni di assegnamento o confronto) offrendogli in cambio classi complete di tutte le funzioni e operazioni elementari (ad es. in un container, copia, assegnamento, inserimento/rimozione, iterazione tra gli elementi) e pronte all'uso.
"(grazie Wikipedia)"


!!Un passo indietro: cosa si intende per template
!!! Un metodo Template




!!!Quando si usa


# per avere modo di controllare come le sottoclassi ereditano dalla superclasse, facendo in modo che i metodi template chiamino dei metodi "gancio" (hook) e impostarli come unici metodi sovrascrivibili.

!!!un esempio rapido


# per gli int: void swap(int& x, int& y){int tmp=x; x=y; y=tmp; }
# per gli double: void swap(double& x, double& y){double tmp=x; x=y; y=tmp; }
# per i float: void swap(float& x, float& y){floattmp=x; x=y; y=tmp; }
#ecc...


# per tutti i tipi: template<class T> void swap(T& x, T& y){ T tmp=x;x=y;y= tmp; }






Programmare sapendo usare la STL fa risparmiare un sacco di tempo, di codice, e di errori. Si evita infatti tutte le volte di reinventare la ruota.

!! Iteratori
Gli iteratori astraggono il concetto di puntatori. In particolare vengono usati per puntare ad un elemento di una sequenza. Su un iteratore i sono sempre definite almeno queste tre operazioni:
# Dereferenziazione: *i

# Test di (dis)uguaglianza: i==j, i!=j

Vari tipi di iteratori:
# Forward: Permettono di avanzare in una sequenza
# Bidirectional Possono scorrere in entrambi i sensi di una sequenza


!!Contenitori

Ogni contenitore esporta degli iteratori che permettono di accedere e puntare agli elementi: (es. vector<int> v )

# v.begin() restituisce un iteratore al primo elemento di v


!!!Vector

Alcuni metodi importanti:
*size_type vector::size() const "lunghezza del vector"
*bool vector::empty() const "controlla che il vector contenga almeno un elemento"
*size_type vector::capacity() const "credo che controlli quanti elementi possono essere inseriti al massimo"
*reference vector::operator[](size_type) const
*reference vector::front() "ritona il primo elemento"
*reference vector::back() "ritorna l'ultimo elemento"

*void vector::pop_back() ) "Cancella l'ultimo elemento"
*iterator vector::insert(iterator, const T&) ) "inserisce un nuovo elemento"
*iterator vector::erase(iterator) ) "cancella un elemento dal vettore"

!!!List

Alcuni metodi importanti:
* size_type list::size() const )
* bool list::empty() const
* iterator list::push_back(const T&) )
* iterator list::push_front(const T&) )
* void list::pop_back() )
* void list::pop_front() )
* iterator list::insert(iterator, const T&) )
* iterator list::erase(iterator) )
* void list::remove(const T& val) )
* void list::reverse() )

!!!Contenitori associativi: map<K, T, Compare>
* map::key_type
* map::mapped_type
* map::value_type --> pair<key_type,mapped_type>
* pair<iterator,bool> map::insert(const value_type&)
* iterator map::find(const key_type&)
* mapped_type map::operator[](const key_type&)



!!!Stringhe
Le stringhe della libreria standard diverse dalle stringhe di C, usate come container.
Sono oggetti della classe string del C++ ma sono simili ai vettori solo che gli elementi sono solo di tipo character.
# Operazioni su stringhe
# Size e capacity
# Accesso agli elementi di una stringa

I principali metodi delle stringhe sono:
*=,assign = "Assegna un nuovo valore"
*swap = " Swap dei valori tra due stringhe"
*+=, append(),push_back() = " Appende caratteri"
*insert() = " Inserisce caratteri"
*erase() = " Cancella caratteri"
*clear() = " Rimuove I caratteri (la svuota)"
*resize() = " Cambia il # di caratteri (cancella o appende)"
*replace() = " Sostituisce caratteri"
*+ = " Concatena stringhe"
*==,!=,<,<=,>,>=,compare() = " Paragona stringhe"
*size(), length() = " Ritorna il numero dei caratteri"
*max_size() = " Ritorna il massimo num di caratteri"

*capacity() = " Ritorna il numero di caratteri possibili da all.ocare"
*reserve() = " Riserva memoria per un certo num. di caratteri."
*[],at() = " Accede ad un carattere"
*>>,getline() = " Legge il valore da uno strema"
*<< = " Scrive il valore su uno strema"
*copy() = " Copia o scrive i valori in una c_string"
*c_str() = " Ritorna il valore come c_string"
*data() = " Ritorna il valore come array di caratteri"
*substr() = " Ritorna una certa sottostringa"
Modifica - Versioni - Stampa - Modifiche recenti - Cerca
Ultima modifica il 02/08/2006 ore 23:19 CEST