Vai al contenuto
eLearner.app
Modulo 5 · Lezione 1 di 211/18 nel corso~12 min
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:

Code
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>:

Code
#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.
Code
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores ora contiene {90, 85, 95}
std::cout << scores.size(); // Stampa 3

Prova tu

Esercizio#cpp.m5.l1.e1
Tentativi: 0Caricamento…

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().

Caricamento editor…
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

Esercizio#cpp.m5.l1.e2
Tentativi: 0Caricamento…

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.

Caricamento editor…
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

Quiz#cpp.m5.l1.q1
Pronto

Qual è il metodo corretto per aggiungere un elemento in coda a un std::vector in C++?

Code
std::vector<int> numbers; // come aggiungere il valore 50?
Opzioni di risposta