This shows you the differences between two versions of the page.
|
poo-is-ab:laboratoare:11 [2025/01/19 12:12] razvan.cristea0106 |
poo-is-ab:laboratoare:11 [2025/12/04 10:40] (current) razvan.cristea0106 [Algoritmi] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | <hidden>===== Laborator 11 - Standard Template Library (STL) ===== | + | ===== Laborator 11 - Standard Template Library (STL) ===== |
| **Autor: Răzvan Cristea** | **Autor: Răzvan Cristea** | ||
| Line 27: | Line 27: | ||
| Această introducere a **STL-ului** a reprezentat un moment revoluționar în istoria limbajului, oferind programatorilor un set bogat de structuri de date generice (precum **vectori**, **liste**, **seturi**, și **map-uri**), algoritmi și funcționalități asociative, toate bazate pe concepte precum **template-uri** și **iteratori**. | Această introducere a **STL-ului** a reprezentat un moment revoluționar în istoria limbajului, oferind programatorilor un set bogat de structuri de date generice (precum **vectori**, **liste**, **seturi**, și **map-uri**), algoritmi și funcționalități asociative, toate bazate pe concepte precum **template-uri** și **iteratori**. | ||
| - | De atunci, **STL-ul** a evoluat și a fost extins în versiunile ulterioare ale standardului **C++ (C++11, C++14, C++17, C++20, etc.)**, fiind integrată cu noile caracteristici ale limbajului. | + | De atunci, **STL-ul** a evoluat și a fost extins în versiunile ulterioare ale standardului **C++ (C++11, C++14, C++17, C++20, C++23)**, fiind integrată cu noile caracteristici ale limbajului. |
| ==== De ce să folosim STL? ==== | ==== De ce să folosim STL? ==== | ||
| Line 201: | Line 201: | ||
| * **std::list**: Un container bazat pe o **listă dublu înlănțuită**, care permite **adăugarea** și **ștergerea rapidă** a elementelor la **orice poziție** din listă (**O(1)** pentru inserare/ștergere, **O(n)** pentru accesul la elemente). | * **std::list**: Un container bazat pe o **listă dublu înlănțuită**, care permite **adăugarea** și **ștergerea rapidă** a elementelor la **orice poziție** din listă (**O(1)** pentru inserare/ștergere, **O(n)** pentru accesul la elemente). | ||
| - | * **C++11: std::array**: Un container care stochează un **număr fix** de elemente într-un **bloc contigu** de memorie, fiind similar cu un **tablou static**, dar cu funcționalități suplimentare specifice **STL-ului**. | + | * **std::array**: Un container care stochează un **număr fix** de elemente într-un **bloc contigu** de memorie, fiind similar cu un **tablou static**, dar cu funcționalități suplimentare specifice **STL-ului**. |
| - | * **C++11: std::forward_list**: O **listă simplu înlănțuită** care economisește memorie față de **std::list**, fiind mai **eficientă** pentru **inserări** și **ștergeri** la începutul listei, dar **fără acces direct** la elemente intermediare. | + | * **std::forward_list**: O **listă simplu înlănțuită** care economisește memorie față de **std::list**, fiind mai **eficientă** pentru **inserări** și **ștergeri** la începutul listei, dar **fără acces direct** la elemente intermediare. |
| === Adaptoare de Containere (Container Adaptors) === | === Adaptoare de Containere (Container Adaptors) === | ||
| Line 662: | Line 662: | ||
| </code> | </code> | ||
| - | <note tip>Pentru mai mulți algoritmi puși la dispoziție de această librarie recomandăm citirea documentației oficiale care se află chiar [[https://en.cppreference.com/w/cpp/algorithm|aici]].</note> | + | <note tip>Pentru mai mulți algoritmi puși la dispoziție de această librărie recomandăm citirea documentației oficiale care se află chiar [[https://en.cppreference.com/w/cpp/algorithm|aici]].</note> |
| ==== Concluzii ==== | ==== Concluzii ==== | ||
| Line 672: | Line 672: | ||
| Un punct cheie al laboratorului a fost reprezentat de analiza modului în care biblioteca **STL** îmbină conceptul de **programare generică** cu cel de **eficiență**. Am discutat avantajele utilizării **STL-ului**, precum **reutilizarea codului** bine testat și **optimizat**. De asemenea, am evidențiat cum se pot rezolva probleme mai complexe folosind **STL-ul**, pornind de la **manipularea colecțiilor de date** până la **utilizarea algoritmilor predefiniți**. | Un punct cheie al laboratorului a fost reprezentat de analiza modului în care biblioteca **STL** îmbină conceptul de **programare generică** cu cel de **eficiență**. Am discutat avantajele utilizării **STL-ului**, precum **reutilizarea codului** bine testat și **optimizat**. De asemenea, am evidențiat cum se pot rezolva probleme mai complexe folosind **STL-ul**, pornind de la **manipularea colecțiilor de date** până la **utilizarea algoritmilor predefiniți**. | ||
| - | Acest laborator ne-a oferit o perspectivă practică asupra puterii **STL-ului**, consolidând în același timp legătura dintre cunoștințele teoretice acumulate anterior și aplicarea lor **eficientă** în rezolvarea problemelor. Pe scurt, am făcut un pas important spre a scrie un cod **mai bun**, bazat pe principiile **programării moderne** în C++.</hidden> | + | Acest laborator ne-a oferit o perspectivă practică asupra puterii **STL-ului**, consolidând în același timp legătura dintre cunoștințele teoretice acumulate anterior și aplicarea lor **eficientă** în rezolvarea problemelor. Pe scurt, am făcut un pas important spre a scrie un cod **mai bun**, bazat pe principiile **programării moderne** în C++. |