Lekcje modułu (1/2)
Tablice i Wektory
W C++ zarządzanie kolekcjami danych odbywa się głównie za pomocą dwóch narzędzi: tablic w starym stylu (C-style arrays) oraz wektorów (std::vector). Zrozumienie różnicy między pamięcią statyczną a dynamiczną jest kluczowe dla pisania wydajnego kodu.
1. Tablice statyczne (C-style Arrays)
Tablica to kolekcja elementów tego samego typu przechowywanych w spójnych obszarach pamięci. Rozmiar tablicy statycznej musi być znany w momencie kompilacji i nie może być modyfikowany później:
int grades[5] = {18, 22, 25, 28, 30}; // Array di 5 interi
Główne cechy:
- Stały rozmiar: Nie jest możliwe dodawanie ani usuwanie elementów w czasie wykonywania programu (runtime).
- Alokacja na stosie (Stack): Są bardzo szybkie w alokacji i zwalnianiu.
- Dostęp: Odbywa się za pomocą operatora indeksu
[](np.grades[0]dla pierwszego elementu).
2. Wektory dynamiczne (std::vector)
Biblioteka standardowa (STL) języka C++ udostępnia klasę std::vector, która reprezentuje tablicę dynamiczną. Aby z niej skorzystać, należy dołączyć nagłówek <vector>:
#include <vector>
std::vector<int> numbers; // Crea un vettore vuoto di interi
Typowe operacje:
- Dodawanie na końcu: Metoda
.push_back(valore)wstawia element na końcu wektora, automatycznie alokując nową pamięć w razie potrzeby. - Rozmiar: Metoda
.size()zwraca liczbę elementów aktualnie znajdujących się w wektorze. - Bezpieczny dostęp: Oprócz operatora
[]można użyć metody.at(indice)(np.numbers.at(0)), która zgłasza wyjątek, jeśli indeks wykracza poza granice tablicy.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores ora contiene {90, 85, 95}
std::cout << scores.size(); // Stampa 3
Spróbuj sam
Zadeklaruj wektor std::vector liczb całkowitych o nazwie numbers. Dodaj do niego wartości 10, 20 i 30 za pomocą metody .push_back(), a na koniec wypisz jego rozmiar przy użyciu numbers.size().
Pokaż wskazówkę
Zadeklaruj wektor za pomocą `std::vector<int> numbers;`, dodaj trzy liczby za pomocą `.push_back(valore)`i wypisz rozmiar używając`std::cout << numbers.size();`.
Rozwiązanie dostępne po 3 próbach
W funkcji main zdefiniowano 5-elementową tablicę grades. Napisz pętlę for, aby obliczyć sumę wszystkich elementów tablicy, zapisz ją w zmiennej sum i wypisz za pomocą std::cout.
Pokaż wskazówkę
Użyj pętli `for (int i = 0; i < 5; ++i)`i dodaj każdy element wewnątrz pętli za pomocą`sum += grades[i];`.
Rozwiązanie dostępne po 3 próbach
Jaka jest poprawna metoda dodawania elementu na końcu std::vector w C++?
std::vector<int> numbers; // come aggiungere il valore 50?