Documente Academic
Documente Profesional
Documente Cultură
Caracteristici
În STL s-a evitat folosirea moştenirii şi a funcţiilor virtuale din considerente de performanţă,
deasemenea s-a evitat utilizarea operatorilor new şi delete în favoarea alocatorilor (permit metode
de control pentru alocare şi dealocare de memorie).
Tipuri de containere
• Containere secvențiale - structuri de date liniare
o vector: implementează vectori alocați dinamic. (#include<vector>)
o list: implementează o listă liniară dublu înlănțuită. (#include<list>)
1
Programare orientată pe obiecte Curs 7
o deque: asemanator cu vector dar operațiile se pot efectua la ambele capete. Spre
exemplu permite adăugarea eficientă de elemente noi atât la început cît și la
sfârșit. (#include<deque>).
• Containere asociative – structuri de date non liniare, care pot identifica rapid elemente pe
baza perechilor cheie/valoare
o set: mulțime sortată de elemente unice (#include<set>)
o multiset: mulțime sortată de elemente (#include<set>)
o map: stochează perechi sortate de tip <cheie,valoare> în care cheia este
identificator unic (#include<map>)
o multimap: stochează perechi sortate de tip <cheie,valoare> (#include<map>)
• Containere adaptive
o stack: structură de tip stivă (#include<stack>)
o queue: structură de tip coadă (#include<queue>)
o priority_queue: structură de tip coadă în care elementelor le sunt asociate priorități
(#include<queue>)
Iteratorii sunt obiecte care se comportă asemănător pointerilor şi care sunt utilizaţi pentru a
accesa elementele unui container. Iteratorii se aseamănă cu pointerii, dar sunt de fapt obiecte ce
adresează alte obiecte. Cu ajutorul lor pot fi adresate elemente ale containerelor care aparţin anumitor
intervale. Iteratorii reprezintă interfaţa de comunicaţie între algoritmi şi containere, fiind preluaţi ca
parametrii de către algoritmi. Containerele le furnizează algoritmilor o cale de acces către elementele
lor prin intermediul iteratorilor.
Exemplu
#include <iostream>
#include <string>
#include <list>
using namespace std;
int main(){
Exemplu
# include <iostream>
# include <set>
using namespace std;
int main(){
set<int> m;
for (int i = 1; i <= 100; i++)
m.insert(i % 10);
set<int>::const_reverse_iterator it;
for (it = m.rbegin(); it != m.rend(); ++it){
if (*it % 3 == 0)cout << *it << " ";
}
cout << endl;
return 0;
}
3
Programare orientată pe obiecte Curs 7
Exemplu
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(){//maparile sunt pentru perechi de forma:(nume, valoare)
map <string, int> zile;//declararea
zile["Luni"] = 1; //adaugarea de informatii in map
zile["Marti"] = 2;
zile["Miercuri"] = 3;
zile["Joi"] = 4;
zile["Vineri"] = 5;
zile["Sambata"] = 6;
zile["Duminica"] = 7;
//afisare informatiilor din map
cout << "Zi-Denumire\n";
map <string, int>::const_iterator it;
for (it = zile.begin(); it != zile.end(); it++){
cout << it->second << " " << it->first << "\n";
}
}
Exemplu
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string s1 = "ABCDEFGHIJK", s2 = "123456789";
string s3 = s1 + s2;
s1[3] = tolower(s1[3]);
std::transform(s1.begin(), s1.end(), s1.begin(), tolower);
cout << s1.replace(s1.begin(),s1.begin()+3,"OOO")<< endl;
}