Diferente pentru stl intre reviziile #22 si #21

Diferente intre titluri:

Standard Template Library (STL)
STL

Diferente intre continut:

h1. Standard Template Library (STL)
h1. STL
(Categoria _Limbaje_, Autor _Radu Grigore_)
 
(toc){width: 15em}*{text-align:center;} *Continut*
* 'Introducere':stl#introducere
* 'Containeri':stl#containeri
* 'Iteratori':stl#iteratori
* 'Algoritmi':stl#algoritmi
* 'Concluzie si referinte':stl#concluzie
(Categoria _Limbaje_, autor(i) _Radu Grigore_)
Biblioteca standard C++ are doua componente mari: "standard template library" (STL) si stream-uri de intrare/iesire. Acest articol prezinta un subset al STL pe care il folosesc adesea in practica.
h2(#introducere). Introducere
h2. Introducere
STL se bazeaza pe trei concepte centrale: containeri, iteratori si algoritmi. Ca tehnica de programare folosita e bine sa stiti ca orientarea pe obiecte aproape ca lipseste. In schimb se utilizeaza din plin polimorfismul parametric. In C++ numele acestuia este "template"; in C# si Java se obisnuieste sa se spuna "generice".
using namespace std;
==
h2(#containeri). Containeri
h2. Containeri
In limbajul de baza avem la dispozitie tablourile pentru reprezentarea unei secvente indexate de elemente. Dimensiunea unui tablou trebuie fie sa fie cunoscuta la compilare, fie sa fie gestionata explicit de programator prin alocare dinamica. Principalul avantaj al STL este ca ne scapa de aceasta grija. In afara de adresarea indexata obisnuita secventele STL au si operatia {$push_back$}: adauga un element la sfarsit (si, evident, creste dimensiunea cu {$1$}). Exista si operatia inversa {$pop_back$}: elimina ultimul element. Cele trei secvente STL care suporta aceste operatii sunt {$vector$}, $deque$ si {$list$}. Un exemplu de utilizare este:
Sa trecem acum la iteratori.
h2(#iteratori). Iteratori
h2. Iteratori
Ganditiva la algoritmul de gasire a maximului. El nu depinde de implementarea folosita pentru reprezentarea multimii! Tot ceea ce trebuie sa faci este sa accesezi toate elementele.. nici macar nu conteaza ordinea. Ei bine iteratorii permit o astfel de decuplare intre structurile de date si algoritmi.
cout << max(ALL(v)) << endl;
==
h2(#algoritmi). Algoritmi
h2. Algoritmi
Dupa cum vedeti utilizarea functiei max este simpla, mai complicata este definitia. Din fericire header-ul {@<@}{$algorithm$}{@>@} are deja scrise tot felul de astfel de functii dragute. Una de care s-ar putea sa va indragostiti :) este {$next_permutation$}. Ea primeste ca parametrii limitele unei secvente (ca mai sus) si transforma acea secventa in urmatoarea permutare in ordine lexicografica si intoarce true, sau intoarce false daca ordonarea este deja ultima. Iata cum se foloseste:
cout << M << " " << m << endl; // prints "1 2"
==
h2(#concluzie). Concluzie si referinte
h2. Concluzie si referinte
Ce am prezentat in acest articol reprezinta o portiune reprezentativa a STL, dar este totusi doar o portiune. Am preferat sa dau multe exemple simple in locul unor explicatii mai teoretice. Uneori mi-a fost tare greu sa ma abtin :) de exemplu sa nu povestesc mai in detaliu cum e gestionata implicit zona de memorie "rezervata" si de ce...

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.