Documente Academic
Documente Profesional
Documente Cultură
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;
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;
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>
“
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”;
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”;
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