Sunteți pe pagina 1din 12

STL

clasa a 9-a
INTRODUCERE

DE CE:
• STL oferă un sortiment de
ISTORIC containere;
In 1990, Alex Stepanov si Meng • STL publică timpul și
Lee de la laboratoarele Hewlett complexitatea depozitării
containerelor sale;
Packard extind C++ cu o librarie • Containerele STL cresc și se
de clase si functii predefinite micsorează în mod automat;
care vor fi cunoscute ca STL. In • STL oferă algoritmi integrați
1994, STL a fost acceptat ca pentru procesarea containerelor;
• STL oferă iteratoare care fac
parte a ANSI/ISO Standard C++. containerele și algoritmii flexibile
și eficiente;
• STL este rapid;

STL are trei componente de baza:


 Containere
o clasa generica care contine obiecte.
 Iteratori
un pointer generic care faciliteaza accesul la containere
 Algoritmi
functii generice care opereaza cu containerele.
2
CONTAINERE

Def. Un container este un obiect care retine alte obiecte.

Tipuri:
• containere secventa: vector, list;
1 • containere asociative: set, map;
• adaptori: stack, queue;

3
ITERATORI
Def. Un iterator este un pointer generic, utilizat pentru
accesarea cu usurinta a obiectelor unui container.

Tipuri:
• Iterator: se parcurge de la stanga la dreapta;
• reverse_iterator: se parcurge de la dreapta la stanga;
2
Clase:
• Iterator.begin(): returneaza un iterator catre primul
obiect;
• Iterator.end(): returneaza un iterator catre ultimul obiect;

Cu *iterator accesam obiectul;


Prin ++iterator accesam adresa urmatorului obiect;
Prin iterator->metoda putem prelucra obiectul. 4
◦ Clasa pair<T1,T2>

o pereche de obiecte de tipul primul si


al doilea. Elementele pot sa fie de
tipuri diferite.
5
Biblioteca : #include <utility>

Declaratii:
pair <tip1,tip2>
◦ pair <int,int> a; un obiect cu 2 elemente de tip intreg;

pair<int,int> a,b;
Operatii:
referire elemente:
• a.first;
• a.second;
Inserare elemente:
• a=make_pair(2,3); alocarea de valori;
• a.first = 2; a.second = 3;
interschimbare elemente:
• swap (a,b);

6
◦ Clasa vector<T>

vectorii incep cu pozitia 0

8
Biblioteca : #include <vector>

Declaratii:
vector <tip>
◦ vector <int> v(5); un vector cu 5 elemente intregi;
◦ vector <int> v(5,1); un vector cu 5 elemente cu valoarea 1;

 Un vector simplu:
const int N = 10;
vector<int> v(N);
for (int i=0; i < 10; ++i) cin >> v[i];
 Un vector de tip string:
vector<string> svec;
string word;
while ( cin >> word ) {
svec.push_back(word);
}

9
Operatii:
Inserare elemente:
v.push_back(valoare); adaugare la finalul vectorului;
v.insert(v.begin()+2,valoare); adauga pe pozitia 2, valoarea;
v.at(2)=valoare; adauga pe pozitia 2 valoarea;
 Dimensiune vector:
v.size(); cate elemente are stocate;
v.capacity(); cate elemente poate memora;
Stergere elemente:
v.pop_back(); stergere la finalul vectorului;
v.erase(v.begin()); stergere la inceputul vectorului;
v.erase(v.begin()+v.size()-1); sterge toate elementele;
v.erase(v.begin()+2); sterge elementul de pe pozitia 2;
v.erase(v.begin()+1, v.begin()+3); sterge elementele de la pozitia 1
pana la pozitia 3
v.clear(); sterge toate elementele;
Primul element: v.front(); Ultimul element: v.back();
Interschimbare 2 vectori: v1.swap(v2); trebuie sa fie de acelasi tip si se
schimba chiar si dimensiunea.
v.empty(); returneaza 1 daca vectorul e gol si 0 in caz contrar;
v.resize(dimensiune); modificarea dimensiunii unui vector (cele in plus 10
ALGORITMI: #include <algorithm>
Cautare prima aparitie a unei valori. Returneaza un iterator.
• find(v.begin().v.end(),valoare);
vector<int> v(5); ….
vector<int> :: iterator it;
it=find(v.begin(),v.end(),12);
if(it!=v.end()) cout<<*it; else cout<<“elementul negasit”;

Numarul de aparitii a unei valori. Returneaza un intreg.


• count(v.begin().v.end(),valoare);
vector<int> v(5); ….
int n=count(v.begin(),v.end(),12);
cout<<n;

Cautare secventa. Returneaza un iterator.


• search(v1.begin().v1.end(),v2.begin(),v2.end());
vector<int> v1(5); vector<int> v2(5); ….
vector<int> :: iterator it;
it=search(v1.begin(),v1.end(),v2.begin(),v2.end());
if(it!=v1.end()) cout<<“secventa gasita”; else cout<<“secventa negasita”;

11
ALGORITMI: #include <algorithm>
sortare
• sort(v.begin().v.end());
cautare binara. Returneaza true daca s-a gasit valoarea si false
altfel. Secventa este ordonata crescator.
• binary_search(v.begin().v.end(),valoare);
vector<int> v(5); ….
If(binary_search(v.begin(),v.end(), 12)) cout<<“gasit”; else cout<<“negasit”;

Comparare lexicografica. Returneaza true daca prima este mai


mica decat a doua.
• lexicographical_compare(v1.begin().v1.end(),v2.begin(),v2.end(
));
vector<int> v1(5); vector<int> v2(5); ….
cout<<lexicographical_compare(v1.begin().v1.end(),v2.begin(),v2.end());

Permutare de elemente. Returneaza true daca mai poate sa faca.


• next_permutation(v.begin().v.end(), less<int>())
vector<int> v15); ….

do{ …}while(next_permutation(v.begin(),v.end(),less<int>());

12
Matrici:

vector<vector<int>> m {{{1,2,3},{4,5,6},{7,8,9}}};

Sau

vector<int> lini(n);
vector<vector<int>> matrice(coloane,lini);

14

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