Sunteți pe pagina 1din 5

Laboratorul 9

Standard Template Library

Ce ne propunem astăzi

Azi vom învăța cum să folosim cum se lucrează cu STL (Standard Template Library)

Standard Template Library (STL) este o bibliotecă generalizată care ne va permite să folosim
algoritmi, structuri de date deja implemnetate.
STL conține trei componente cheie:
- Clase Container
- Iteratori
- Algoritmi
Containerul reprezintă un obiect ce conține o colectie de alte obiecte. Aceste clase
implementează structure de date clasice sub forma template și în acest fel oferă flexibilitate de
utilizare, dar se ocupă și de managementul spațiului de memorie.
Iteratorii permit accesul la elementele dintr-un container sau ajută la parcurgerea elementelor și
nu ține cont de modul în care sunt stocate. Iteratorii reprezintă o generalizare a ponterilor,
deoarece sunt obiecte ce indică către alte obiecte. Fiecare clasa container are definiși iteratorii
proprii.
STL pune la dispoziție algoritmi cu ajutorul cărora se poate procesa elementele din colecții
(căutare, ordonare, etc). Algoritmii au ca parametrii iteratori și reprezintă funcții template ce nu
sunt metode ale claselor container.
Exista mai multe tipuri de containere:
- Containere secvențiale (sequence containers) – clase: vector, deque, list.
- Adaptoare de containere (container adaptors) – clase: stack, queue, priority_queue
- Containere asociative (associative containers) – clase: set, multiset, map, multimap
- Containere asociative neordonate (unordered associative containers) – C++11:
unordered_set, unordered_multiset, unordered_map, unordered_multimap.
Clasa Vector permite realizarea unui vector alocat dynamic, ce poate conține elemente de orice
tip. Se poate accesa foarte ușor orice element prin operatorul de indexare sau prin iteratori.
Clasa vector pune la dispoziție mai multe metode, cele mai importante sunt:
- push_back() – adaugă un element la finalul vectorului și crește dimensiunea cu 1
- pop_back() – scoate ultimul element din vecotr și scade dimensiunea cu 1
- insert() – insearează un element pe poziția specificată și crește dimensiunea cu 1
- erase() – scoate elemtul de pe poziția specificată și scade dimensiunea cu 1
Mai multe informații despre clasa vector găsiți la următorul link:
http://www.cplusplus.com/reference/vector/vector/

1
Laborator 9 – POO

Containerul List implementează o lista dublu înlănțuită, ale cărei elemente sunt împrăștiate prin
memorie și sunt conectate prin pointeri. Se poate parcurge lista în ambele sensuri.
Pentru a adăuga sau șterge elemente de pe anumite poziții se folosesc iteratori. Dezavantajul
principal al listelor este ca nu se pot accesa imediat valori de pe o anumita pozitie.
Pentru adaugarea sau eliminarea de elemente se pot folosi următoarele metode: push_back,
push_front, pop_back, pot_front.
Mai multe detalii despre containerul List puteți găsi la următorul link:
http://www.cplusplus.com/reference/list/list/
Dacă se dorește implementare unei liste simple înlănțuite se folosește Forward List care este o
secvențe de containere care permit inserarea și ștergerea oriunde în secvență. Mai multe detalii
se pot găsi la următorul link: https://www.cplusplus.com/reference/forward_list/forward_list/
Mai multe informații despre Containers se gasesc la următorul link:
https://www.cplusplus.com/reference/stl/

Partea practică. Mod de lucru


In exemplu 1 se va folosi clasa Vector din Standard Template Library (STL).

2
Constructori și destructori în limbajul C++

In exemplu 2 se va folosi List din Standard Template Library (STL).

3
Laborator 9 – POO

In exemplu 3 se va folosi se va folosi List din Standard Template Library (STL) cu


obiecte de tip Student.

4
Constructori și destructori în limbajul C++

Exercitiu
Să se realizeze un program care să gestioneze următoarele informații despre articolele
dintr-un magazin. Se va folosi STL (Standard Template Library).
- Telefon Fix cu următoarele variable: Producător, Culoare, Dimensiune
- Telefon Mobil cu următoarele variabile: Producător, Culoare, Sistem operare.
Creaţi din informaţiile date o clasă de bază şi două clase derivate şi implementaţi
următoarele funcţii prin intermediul unui meniu interactiv, folosind
container/containere din STL (Standard Template Library):
1. Citirea din fișier
2. Adaugarea de informatii in gestiunea magazinului
3. Afisarea stocului și salvarea în fișier
4. Vânzarea unui articol
5. Căutarea unui articol după producător
6. Ieșire.
.

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