This shows you the differences between two versions of the page.
poo-is-ab:laboratoare:11 [2024/12/09 09:36] razvan.cristea0106 [Clasa string] |
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 trebuie 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 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 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 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 ==== |