Lecții din modul (1/2)
Matrice și Vectori
În C++, gestionarea colecțiilor de date se face în principal prin două instrumente: matrice în stil vechi (matrice în stil C) și vectori (std::vector). Înțelegerea diferenței dintre memoria statică și cea dinamică este fundamentală pentru scrierea unui cod eficient.
1. Matrice statice (Matrice în stil C)
O matrice este o colecție de elemente de același tip stocate în locații de memorie adiacente. Mărimea unui tablou static trebuie să fie cunoscută în momentul compilării și nu poate fi modificată ulterior:
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integersCaracteristici cheie:
- Dimensiune fixă: nu puteți adăuga sau elimina elemente în timpul execuției.
- Alocarea stivei: Foarte rapid de alocat și dezalocat.
- Acces: Efectuat prin operatorul de index
[](de exemplu,grades[0]pentru primul element).
2. Vectori dinamici (std::vector)
Biblioteca de șabloane standard (STL) C++ oferă clasa std::vector, care reprezintă o matrice dinamică. Pentru a-l folosi, trebuie să includeți antetul <vector>:
#include <vector>
std::vector<int> numbers; // Creates an empty vector of integersOperațiuni comune:
- Adăugați la sfârșit: Metoda
.push_back(value)inserează un element la sfârșitul vectorului, realocând automat memoria dacă este necesar. - Dimensiune: Metoda
.size()returnează numărul de elemente aflate în prezent în vector. - Acces sigur: pe lângă operatorul
[], puteți utiliza metoda.at(index)(de exemplu,numbers.at(0)), care generează o excepție dacă indexul este în afara limitelor.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3Încercați-l singur
Declarați un vector std::de numere întregi numite numere. Adăugați valorile 10, 20 și 30 în interiorul acestuia folosind metoda .push_back(), apoi imprimați dimensiunea acestuia folosind numbers.size().
Afișează indiciu
Declarați vectorul cu `std::vector<int> numere;`, introduceți cele trei numere cu `.push_back(value)`și tipăriți-l cu`std::cout << numbers.size();`.
Soluție disponibilă după 3 încercări
În principal, este definită o matrice de grade de 5 elemente. Scrieți o buclă for pentru a calcula suma tuturor elementelor din matrice, stocați-o în suma variabilă și imprimați-o folosind std::cout.
Afișează indiciu
Folosiți o buclă `for (int i = 0; i < 5; ++i)` și însumați fiecare element din interiorul buclei cu`sum += note[i];`.
Soluție disponibilă după 3 încercări
Care este metoda corectă de a adăuga un element la sfârșitul unui std::vector în C++?
std::vector<int> numbers; // come aggiungere il valore 50?