Sunteți pe pagina 1din 4

Laborator 12

Standard Template Library


Standard Template Library (STL), este o bibliotec C++ care conine clase containere,
algoritmi, iteratori.
Clasele STL pot fi mprite n
Clase container (containerele sunt obiecte care pot conine alte obiecte)
o Secvene
Vector
Deque
list
o Containere asociative
Set
map
o Adaptori ai containerelor
Stack LIFO
Queue FIFO
Priority_queue
o String
String
Rope
o bitset
String
Permite operaii cu iruri de caractere.
#include <iostream>
#include <string>
using namespace std;
int main(){
string s1 = "Hello ", s2 = " world!";
string s3 = s1+s2;
//supradefinirea operatorului +=
s3 += "\n";
cout << s3;
//tiparire in stil C
printf("\ns3 = %s\n", s3.c_str());
//supradefinirea operatorului ==
string raspuns;
cout << "Acesta este laboratorul 11 de C++?"; cin>>raspuns;
if (raspuns == "yes"){
cout << "Raspuns corect\n";
} else {
cout << "Raspuns corect\n";
}
cin.ignore();

//manipulare stringuri
string a = "Curs C++\n";
cout << "Sir initial: "<< a;
a.replace(0, 4, "Laborator");
cout << "Replace: "<< a;
string s4 = a.substr(9, a.size());
cout << "Substring: " << s4;
getchar();
return 0 ;
}

Operaii cu liste
Exemplu. Manipularea unei liste de string-uri.
#include <iostream>
#include <string>
#include <list>
using namespace std;
int main(){
//declararea unei liste de siruri de caractere
list <string> nume;
//adaugarea de informatii in lista
nume.push_back("nume mijloc");
nume.push_front("ultimul nume");
nume.push_front("primul nume");
//afisarea informatiilor stocate in lista
cout << "Afisare lista: ";
for (list<string>::iterator it = nume.begin(); it != nume.end();
it++){
cout << *it << ", ";
}
cout << endl;
//afisare ultimul element
cout << "Ultimul elemet este: " << (string)nume.back() << endl;
//aflarea dimensiuni
cout << "Dimensiune lista: " << nume.size() << endl;
//sortare lista
nume.sort();
//afisarea informatiilor stocate in lista
cout << "Afisare lista: ";
for (list<string>::iterator it = nume.begin(); it != nume.end();
it++){
cout << *it << ", ";
}
cout << endl;

getchar();
}

Ex. Afiai lista folosind: (1) iterarori de ieire i (2)algoritmul foreach. Sortai lista de
persoane descresctor.
Operaii cu map
Obiectele de tip map conin un ir de perechi de forma <cheie, valoare>.
Exemplu: Crearea unei mapri pentru zilele calendaristice.
int main(){
//declararea mapari pentru zilele calendaristice
map <string, int> zile;
//adaugarea de informatii in map
zile["Luni"] = 1;
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";
}
//ex: cititi un text dintr-un fisier si inlocuiti numele zilei
din saptamana cu numarul ei
getchar();
return 0;
}

Legare iteratori cu intrri/ieiri


Exemplu: Citirea unui fiier i scrierea n alt fiier a cuvintelor din fiier sortate i
eliminarea duplicatelor.
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
int main(){
string from, to;

cout << "Fisierul de unde se citeste : "; cin >> from;


cout << "Fisierul de unde se scrie : "; cin >> to;
//deschidere fisier
ifstream is(from.c_str());
//definire iteratori fisier
istream_iterator <string > isi(is);
istream_iterator <string > eos; //end of stream
//definire vector cu continut fisier
vector <string> v(isi, eos);
//sortare vector de cuvinte
sort(v.begin(), v.end());
//deschide fisier pentru scriere
ofstream os(to.c_str());
//definire iterator
ostream_iterator <string> osi(os, "\n");
//scriere in fisier fara duplicate
unique_copy(v.begin(), v.end(), osi);
return (!is.eof() && !os);
}

Tema comuna (Folosii containere, iteratori, algoritmi definii n STL)


1. Citii un text dintr-un fiier. Afiai de cate ori se repeta un cuvnt <cuvnt, nr
repetri>. Citii dintr-un fiier cuvintele care nu se considera a fi cuvinte de
legtura (ex: si, un, o ), eliminai aceste cuvinte din text i creai un nou fiier
cu noul text.
2. Realizai un program care calculeaz notele obinute la examen de un student. Un
student va fi caracterizat prin: nume, nota laborator, nota examen, numr absente.
Programul va permite:
- salvarea listei de studenii ntru-un fiier
- citirea din fiier a listei de studenii
- sortarea dup numele studentului a listei
- cutarea in lista a unui student dup nume
- afiarea tuturor studenilor cu nota cuprinsa ntre x i y. x,y se vor citi de
la tastatur i vor fi validate ca sa fie note valide
- afiarea studenilor care au mai puine de 12 prezente

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