This shows you the differences between two versions of the page.
|
poo-is-ab:laboratoare:11 [2024/12/10 09:08] razvan.cristea0106 |
poo-is-ab:laboratoare:11 [2025/12/04 10:40] (current) razvan.cristea0106 [Algoritmi] |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| Studentul va fi capabil la finalul acestui laborator să: | Studentul va fi capabil la finalul acestui laborator să: | ||
| - | * înțeleagă importanța conceptului de programare modernă în C++ și avantajele oferite de utilizarea bibliotecii STL. | + | * înțeleagă importanța conceptului de programare modernă în C++ și avantajele oferite de utilizarea bibliotecii STL |
| - | * recunoască și să explice clasele și componentele principale din biblioteca STL. | + | * recunoască și să explice clasele și componentele principale din biblioteca STL |
| - | * utilizeze eficient diverse structuri de date și algoritmi disponibili în STL pentru rezolvarea unor probleme concrete. | + | * utilizeze eficient diverse structuri de date și algoritmi disponibili în STL pentru rezolvarea unor probleme concrete |
| - | * aplice principiile și cunoștințele dobândite anterior în programare pentru a dezvolta soluții robuste și eficiente folosind STL. | + | * aplice principiile și cunoștințele dobândite anterior în programare pentru a dezvolta soluții robuste și eficiente folosind STL |
| - | * identifice și să utilizeze algoritmi standard din STL pentru a optimiza procesele și pentru a simplifica implementarea unor operații complexe. | + | * identifice și să utilizeze algoritmi standard din STL pentru a optimiza procesele și pentru a simplifica implementarea unor operații complexe |
| - | + | ||
| ==== Introducere ==== | ==== Introducere ==== | ||
| 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 ==== | ||