Lezioni del modulo (1/2)
Array e Vettori
In C++, la gestione di collezioni di dati avviene principalmente attraverso due strumenti: gli array vecchio stile (C-style arrays) e i vettori (std::vector). Comprendere la differenza tra memoria statica e dinamica è fondamentale per scrivere codice efficiente.
1. Array Statici (C-style Arrays)
Un array è una collezione di elementi dello stesso tipo memorizzati in posizioni contigue di memoria. La dimensione di un array statico deve essere nota al momento della compilazione e non può essere modificata in seguito:
int grades[5] = {18, 22, 25, 28, 30}; // Array di 5 interi
Caratteristiche principali:
- Dimensione fissa: Non è possibile aggiungere o rimuovere elementi a runtime.
- Allocazione sullo Stack: Sono molto veloci da allocare e deallocare.
- Accesso: Avviene tramite l'operatore di indice
[](es.grades[0]per il primo elemento).
2. Vettori Dinamici (std::vector)
La Standard Template Library (STL) di C++ fornisce la classe std::vector, che rappresenta un array dinamico. Per utilizzarla è necessario includere l'header <vector>:
#include <vector>
std::vector<int> numbers; // Crea un vettore vuoto di interi
Operazioni comuni:
- Aggiunta in coda: Il metodo
.push_back(valore)inserisce un elemento alla fine del vettore, riallocando automaticamente la memoria se necessario. - Dimensione: Il metodo
.size()restituisce il numero di elementi attualmente presenti nel vettore. - Accesso sicuro: Oltre all'operatore
[], è possibile usare il metodo.at(indice)(es.numbers.at(0)), che lancia un'eccezione se l'indice è fuori dai limiti.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores ora contiene {90, 85, 95}
std::cout << scores.size(); // Stampa 3
Prova tu
Dichiara un std::vector di interi chiamato numbers. Aggiungi al suo interno i valori 10, 20 e 30 usando il metodo .push_back(), infine stampane la dimensione usando numbers.size().
Mostra suggerimento
Dichiara il vettore con `std::vector<int> numbers;`, inserisci i tre numeri con `.push_back(valore)`e stampalo con`std::cout << numbers.size();`.
Soluzione disponibile dopo 3 tentativi
Nel main è definito un array grades di 5 elementi. Scrivi un ciclo for per calcolare la somma di tutti gli elementi dell'array, memorizzala nella variabile sum e stampala con std::cout.
Mostra suggerimento
Usa un ciclo `for (int i = 0; i < 5; ++i)`e somma ogni elemento all'interno del ciclo con`sum += grades[i];`.
Soluzione disponibile dopo 3 tentativi
Qual è il metodo corretto per aggiungere un elemento in coda a un std::vector in C++?
std::vector<int> numbers; // come aggiungere il valore 50?