Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is-ab:laboratoare:11 [2024/12/08 18:16]
razvan.cristea0106 [Algoritmi]
poo-is-ab:laboratoare:11 [2025/01/19 22:30] (current)
razvan.cristea0106
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 43: Line 43:
 ==== ==== ==== ====
  
-Pe scurt, **STL-ul** ne ajută să scriem un cod robust, eficient și ușor de înțeles, economisind timp prețios în procesul de dezvoltare. Totuși ​trebie ​menționat că o bună cunoaștere a conceptului de **structuri de date și algoritmi** va simplifca masiv înțelegerea modului în care componentele acestei biblioteci funcționează.+Pe scurt, **STL-ul** ne ajută să scriem un cod **robust****eficient** și **ușor de înțeles**, economisind timp prețios în procesul de dezvoltare. Totuși ​trebuie ​menționat ​faptul ​că o bună cunoaștere a conceptului de **structuri de date și algoritmi** va simplifca masiv înțelegerea modului în care componentele acestei biblioteci funcționează.
  
 ==== Alcătuirea bibliotecii standard din C++ ==== ==== Alcătuirea bibliotecii standard din C++ ====
Line 78: Line 78:
 | **at()** | Returnează caracterul de la o poziție specifică (cu verificare de limite). | | **at()** | Returnează caracterul de la o poziție specifică (cu verificare de limite). |
 | **operator=** | Atribuie un string altui string. | | **operator=** | Atribuie un string altui string. |
-| **operator[]** | Returnează caracterul de la o poziție specifică (fără verificare de limite). |+| **operator[ ]** | Returnează caracterul de la o poziție specifică (fără verificare de limite). |
 | **operator+** | Concatenează două stringuri sau un string și un șir de caractere. | | **operator+** | Concatenează două stringuri sau un string și un șir de caractere. |
 | **operator+=** | Adaugă un string sau un șir de caractere la stringul curent. | | **operator+=** | Adaugă un string sau un șir de caractere la stringul curent. |
Line 164: Line 164:
 </​code>​ </​code>​
  
 +<note tip>​Pentru toate metodele și operatorii puși la dispoziție de clasa **string** recomandăm citirea documentației oficiale care se poate găsi chiar [[https://​en.cppreference.com/​w/​cpp/​string/​basic_string|aici]].</​note>​
 ==== Standard Template Library ==== ==== Standard Template Library ====
  
Line 256: Line 257:
 | **pop_back()** | Elimină ultimul element din vector. | | **pop_back()** | Elimină ultimul element din vector. |
 | **at()** | Returnează elementul de la o anumită poziție, cu verificare de limite. | | **at()** | Returnează elementul de la o anumită poziție, cu verificare de limite. |
-| **operator[]** | Returnează elementul de la o anumită poziție, fără verificare de limite. |+| **operator[ ]** | Returnează elementul de la o anumită poziție, fără verificare de limite. |
 | **size()** | Returnează numărul curent de elemente din vector. | | **size()** | Returnează numărul curent de elemente din vector. |
 | **capacity()** | Returnează capacitatea totală a vectorului, adică numărul maxim de elemente pe care le poate stoca fără a realoca memorie. | | **capacity()** | Returnează capacitatea totală a vectorului, adică numărul maxim de elemente pe care le poate stoca fără a realoca memorie. |
Line 330: Line 331:
 Pentru clasa **list** propunem următorul tabel ca și referință. Pentru clasa **list** propunem următorul tabel ca și referință.
  
-^     ​Denumire metodă/​Operator ​    ^     ​Descriere ​    ^+^     ​Denumire metodă ​    ​^ ​    ​Descriere ​    ^
 | **push_back()** | Adaugă un element la sfârșitul listei. | | **push_back()** | Adaugă un element la sfârșitul listei. |
 | **push_front()** | Adaugă un element la începutul listei. | | **push_front()** | Adaugă un element la începutul listei. |
Line 420: Line 421:
 Pentru clasa **stack** propunem următorul tabel ca și referință. Pentru clasa **stack** propunem următorul tabel ca și referință.
  
-^     ​Denumire metodă/​Operator ​    ^     ​Descriere ​    ^+^     ​Denumire metodă ​    ​^ ​    ​Descriere ​    ^
 | **push()** | Adaugă un element în vârful stivei. | | **push()** | Adaugă un element în vârful stivei. |
 | **pop()** | Elimină elementul din vârful stivei. | | **pop()** | Elimină elementul din vârful stivei. |
Line 431: Line 432:
 Iar pentru clasa **queue** propunem tabelul de mai jos. Iar pentru clasa **queue** propunem tabelul de mai jos.
  
-^     ​Denumire metodă/​Operator ​    ^     ​Descriere ​    ^+^     ​Denumire metodă ​    ​^ ​    ​Descriere ​    ^
 | **push()** | Adaugă un element la sfârșitul cozii. | | **push()** | Adaugă un element la sfârșitul cozii. |
 | **emplace()** | Construiește un element direct la sfârșitul cozii, evitând copierea. | | **emplace()** | Construiește un element direct la sfârșitul cozii, evitând copierea. |
Line 482: Line 483:
 <note warning>​Clasele **stack**, **queue** și respectiv **priority_queue** nu au iteratori puși la dispoziție deoarce singurele operații permise asupra acestor structuri de date sunt cele de **push** și **pop**.</​note>​ <note warning>​Clasele **stack**, **queue** și respectiv **priority_queue** nu au iteratori puși la dispoziție deoarce singurele operații permise asupra acestor structuri de date sunt cele de **push** și **pop**.</​note>​
  
-<note tip>​Pentru mai multe detalii despre clasele **stack**, **queue** și **priority_queue** recomandăm următoarele ​documentații:​+<note tip>​Pentru mai multe detalii despre clasele **stack**, **queue** și **priority_queue** recomandăm ​citirea ​următoarelor ​documentații ​oficiale:
   * pentru stivă puteți citi de [[https://​en.cppreference.com/​w/​cpp/​container/​stack|aici]];​   * pentru stivă puteți citi de [[https://​en.cppreference.com/​w/​cpp/​container/​stack|aici]];​
  
Line 495: Line 496:
  
 ^     ​Denumire metodă/​Operator ​    ​^ ​    ​Descriere ​    ^ ^     ​Denumire metodă/​Operator ​    ​^ ​    ​Descriere ​    ^
-| **operator[]** | Accesează sau inserează un element cu cheia specificată. |+| **operator[ ]** | Accesează sau inserează un element cu cheia specificată. |
 | **at()** | Returnează o referință la valoarea asociată unei chei, aruncând o excepție dacă cheia nu există. | | **at()** | Returnează o referință la valoarea asociată unei chei, aruncând o excepție dacă cheia nu există. |
 | **insert()** | Inserează un element (pereche cheie-valoare) în map. | | **insert()** | Inserează un element (pereche cheie-valoare) în map. |
Line 509: Line 510:
 | **upper_bound()** | Returnează un iterator către primul element care este mai mare decât cheia specificată. | | **upper_bound()** | Returnează un iterator către primul element care este mai mare decât cheia specificată. |
  
-Iar pentru clasa set propunem tabelul de mai jos.+Iar pentru clasa **set** propunem tabelul de mai jos.
  
-^     ​Denumire metodă/​Operator ​    ^     ​Descriere ​    ^+^     ​Denumire metodă ​    ​^ ​    ​Descriere ​    ^
 | **insert()** | Inserează un element în set, păstrând ordinea și unicitatea. | | **insert()** | Inserează un element în set, păstrând ordinea și unicitatea. |
 | **emplace()** | Construiește un element direct în set, evitând copierea. | | **emplace()** | Construiește un element direct în set, evitând copierea. |
Line 614: Line 615:
 </​code>​ </​code>​
  
-<note tip>​Pentru mai multe detalii despre clasele **map** și **set** recomandăm următoarele ​documentații:​+<note tip>​Pentru mai multe detalii despre clasele **map** și **set** recomandăm ​citirea ​următoarelor ​documentații ​oficiale:
   * pentru mapă puteți citi de [[https://​en.cppreference.com/​w/​cpp/​container/​map|aici]];​   * pentru mapă puteți citi de [[https://​en.cppreference.com/​w/​cpp/​container/​map|aici]];​
  
Line 622: Line 623:
 ==== Algoritmi ==== ==== Algoritmi ====
  
-Pentru a folosi algoritmii din **STL** vom include fișierul antet **''​#include <algorithm>''​**. Aceast fișier cuprinde algoritmi de **sortare**,​ **căutare**,​ **numărare** și mulți alții pe care **nu** mai trebuie să îi rescriem noi de la zero. Propunem un exemplu simplu de utlizare a funcțiilor **sort** și **count** în următorul bloc de cod C++.+Pentru a folosi algoritmii din **STL** vom include fișierul antet **''​algorithm''​**. Aceast fișier cuprinde algoritmi de **sortare**,​ **căutare**,​ **numărare** și mulți alții pe care **nu** mai trebuie să îi rescriem noi de la **zero**. Propunem un exemplu simplu de utlizare a funcțiilor **sort** și **count** în următorul bloc de cod C++.
  
 <code cpp> <code cpp>
Line 661: Line 662:
 </​code>​ </​code>​
  
-<note tip>​Pentru mai mulți algoritmi puși la dispoziție de această librarie recomandăm citirea documentației 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ă librarie recomandăm citirea documentației ​oficiale ​care se află chiar [[https://​en.cppreference.com/​w/​cpp/​algorithm|aici]].</​note>​
  
 ==== Concluzii ==== ==== Concluzii ====
poo-is-ab/laboratoare/11.1733674568.txt.gz · Last modified: 2024/12/08 18:16 by razvan.cristea0106
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0