Sunteți pe pagina 1din 4

Biblioteca de abloane standard (Standard Template Library).

Biblioteca de abloane Standard (STL) asigur o abstractizare standardizat a datelor prin intermediul containerelor i o abstractizare procedural prin intermediul algoritmilor. Programele dezvoltate folosind STL beneficiaz de o vitez de dezvoltare i o vitez de execuie sporite. Ele sunt mai eficiente, mai robuste, mai portabile, mai uor de modificat i ntreinut. Componentele STL sunt: containerele, iteratorii, algoritmii, functorii (obiectele funcii) i adaptorii.

Containere.
Un container este un obiect care pstreaz o colecie de alte obiecte. Containerele (exceptnd string i ) sunt clase generice (parametrizate) n STL se folosesc dou tipuri de containere:

containere secveniale (vector, list, coad cu dou capete - deque) containere asociative (mulime, relaie) Un container secvenial pstreaz colecia de obiecte ntr-o ordine strict liniar.

Containerele asociative pstreaz informaiile din colecie sortate, ceea ce permite regsirea rapid a obiectelor din colecie, pe baza unei chei.

Vectorul (vector)
Constructor vector<T>v vector<T>v(n) vector<T>v(n,val) vector<T>v(v1) Accesor v[i] v.front() v.back() v.capacity() v.size() v.empty() v.begin() v.end() Efect creaz un vector vid creaz un vector cu n elemente creaz un vector cu n elemente iniializate cu val creaz un vector iniializat cu vectorul v1 Efect ntoarce elementul i ntoarce primul element ntoarce ultimul element ntoarce numrul maxim de elemente ntoarce numrul curent de elemente ntoarce true dac vectorul este vid ntoarce un iterator la nceputul vectorului ntoarce un iterator dup sfritul vectorului Complexitat e O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(1) Complexi tate O(1) O(n) O(1) O(n) O(n) Complexi tate O(1) O(n) O(n) O(n)

Modificator v.push_back(val) v.insert(iter,val) v.pop_back() v.erase(iter) v.erase(iter1,iter2)

Efect adaug o valoare la sfrit insereaz valoarea n poziia indexat de iterator terge valoarea de la sfrit terge valoarea indexat de iterator terge valorile din domeniul de iteratori

Coada cu dou capete (deque)


Constructor deque<T>d deque<T>d(n) deque<T>d(n,val) deque<T>d(d1) Accesor d[i] d.front() Efect creaz un deque vid creaz un deque cu n elemente creaz un deque cu n elemente iniializate cu val creaz un deque iniializat cu deque-ul d Complexitat e O(1) O(n) O(n) O(n)

Efect ntoarce elementul i ntoarce primul element

Complexitate O(1) O(1)

d.back() d.capacity() d.size() d.empty() d.begin() d.end()

ntoarce ultimul element ntoarce numrul maxim de elemente ntoarce numrul curent de elemente ntoarce true dac deque-ul este vid ntoarce un iterator la nceputul deque-ului ntoarce un iterator dup sfritul deque-ului

O(1) O(1) O(1) O(1) O(1) O(1) Complexitate O(1) sau O(n) O(n) O(1) O(n) O(n)

Modificator d.push_back(val) d.insert(iter,val) d.pop_back() d.erase(iter) d.erase(iter1,iter2)

Efect adaug o valoare la sfrit insereaz valoarea n poziia indexat de iterator terge valoarea de la sfrit terge valoarea indexat de iterator terge valorile din domeniul de iteratori

Lista (list)
Constructor list<T>L list <T>L(L1) Accesor L.front() L.back() L.size() L.empty() L.begin() L.end() Modificator L.push_front(val) L.push_back(val) L.insert(iter,val) L.pop_front() L.pop_back() L.erase(iter) L.erase(iter1,iter2) L.remove(val) L.remove_if(pred) L.reverse(pred) L.sort() L.sort(comp) L.merge(L1) Efect creaz o list vid creaz o list iniializat cu lista L1 Efect ntoarce primul element ntoarce ultimul element ntoarce numrul curent de element ntoarce true dac lista este vid ntoarce un iterator la nceputul listei ntoarce un iterator dup sfritul liste Efect adaug o valoare la nceput adaug o valoare la sfrit insereaz valoarea n poziia indexat de iterator terge valoarea de la nceput terge valoarea de la sfrit terge valoarea indexat de iterator terge valorile din domeniul de iteratori terge toate apariiile lui val n list terge toate elementelele care satisfac predicatul inverseaz lista sorteaz lista sorteaz lista folosind funcia de comparaie interclaseaz dou liste sortate Complexi tate O(1) O(n) Complexita te O(1) O(1) O(1) O(1) O(1) O(1) Complexita te O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(n) O(n) O(n) O(nlogn) O(nlogn) O(n)

Stiva (stack)
Constructor stack<T>s Accesor s.top() s.size() s.empty() Modificator s.push(val) s.pop() Efect creaz o stiv vid Efect ntoarce elementul din vrf ntoarce numrul curent de elemente ntoarce true dac stiva este vid Efect pune o valoare n vrful stivei terge valoarea din vrful stivei Complexita te O(1) Complexi tate O(1) O(1) O(1)

Complexi tate O(1) O(1)

Coada (queue)
Constructor queue<T>q Accesor q.front() q.back() q.size() q.empty() Modificator q.push(val) q.pop() Efect creaz o coad vid Efect ntoarce elementul din faa cozii ntoarce elementul din spatele cozii ntoarce numrul curent de elemente ntoarce true dac coada este vid Efect pune o valoare n spatele cozii terge valoarea din faa cozii Complexi tate O(1) Complexi tate O(1) O(1) O(1) O(1) Complexita te O(1) O(1)

Coada prioritar(priority queue)


Constructor priority_queue<T,comp>q Accesor q.top() q.size() q.empty() Modificator q.push(val) q.pop() Efect creaz o coad prioritarvid, sortat cu comp Efect ntoarce elementul cel mai prioritar (mai mare) ntoarce numrul curent de elemente ntoarce true dac coada prioritar este vid Efect insereaz o valoare n coada prioritar scoate elementul cel mai mare din coada prioritar Complexi tate O(1)

Complexitat e O(1) O(1) O(1) Complexita te O(logn) O(1)

Mulimi i multimulimi (set)


Mulimile pstreaz obiecte sortate cu operatorul < (care poate fi suprancrcat), pentru a fi regsite rapid. ntr-o mulime, un element apare o singur dat. ntr-o multimulime pot apare mai multe copii ale unui element. Constructor set<tip_ch,comp_ch>m Efect creaz o mulime vid; sortarea elementelor se face cu comp_ch Efect ntoarce un iterator la apariia cheii n m (m.end(), dac gsete cheia n m) ntoarce un iterator la prima apariie a cheii n m (m.end(), dac nu gsete cheia n m) ntoarce un iterator la primul element mai mare ca cheia n m (m.end(), dac nu exist un asemenea element) ntoarce pair<lower_bound(ch),upper_bound(ch)> ntoarce numrul de elemente egale cu cheia ch n m ntoarce numrul curent de elemente ntoarce true dac coada prioritar este vid ntoarce un iterator la primul element (cel mai mic)din m ntoarce un iterator la ultimul element (cel mai mare)din m Efect Complexitat e O(1)

Accesor m.find(ch) m.lower_bound(ch) m.upper_bound(ch) m.equal_range(ch) m.count(ch) m.size() m.empty() m.begin() m.end() Modificator

Complexitat e O(log n) O(log n) O(log n) O(log n) O(log n) O(1) O(1) O(1) O(1) Complexi tate

m.insert(iter,ch) m.insert(ch)

insereaz un element ch n m. ntoarce iterator la elementul ch din m insereaz un element ch n m.ntoarce pair<iterator,bool> bool este true dac inserarea a avut loc. Iterator indic cheia inserat

O(log n) O(log n)

Relaii i multirelaii (map)


Relaiile pot fi privite ca vectori generalizai, n care locul indicelui ntreg l ia cheia, care poate fi de orice tip, motiv pentru care relaiile se mai numesc i tabele asociative. Memorarea unei perechi <cheie, valoare> poate fi fcut prin atribuirea map[ch]=val. Relaiile se implementeaz cu arbori de cutare echilibrai (de exemplu arbori roii-negri), care asigur timpi de cutare-regsire logaritmici.. Dac perechea <cheie, valoare> nu exist n relaie, indexarea map[ch] creaz o intrare fals n relaie, motiv pentru care se caut cheia n prealabil cu map.find(ch). Constructor map<tip_ch,tip_val,comp_ch>r Efect creaz o relaie vid; sortarea elementelor dup cheie se face cu comp_ch Efect ntoarce valoarea accesat prin cheie ntoarce un iterator la perechea cheie-valoare (r.end(), dac nu gsete cheia n r) ntoarce numrul curent de elemente ntoarce true dac relaia este vid ntoarce un iterator la prima pereche din r ntoarce un iterator la ultima pereche din r Efect memoreaz perechea cheie-valoare n r are acelai efect Complexitate O(log n) O(log n) Complexitat e O(1)

Accesor r[ch] r.find(ch) r.size() r.empty() r.begin() r.end()

Complexi tate O(log n) O(log n) O(1) O(1) O(1) O(1)

Modificator r[ch]=val m.insert(pereche)

S-ar putea să vă placă și