Accedere agli elementi
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 12 di 56.
Ora che sai creare vettori e aggiungervi elementi, devi sapere come recuperare elementi specifici dal tuo vettore. C++ offre due modi principali per accedere ai singoli elementi: l'operatore parentesi quadre e il metodo .at().
L'operatore delle parentesi quadre [] funziona proprio come con gli array regolari. Specifichi l'indice dell'elemento a cui vuoi accedere:
std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0]; // Ottiene 10
int third = numbers[2]; // Ottiene 30Il metodo .at() offre un modo alternativo per accedere agli elementi, con un’importante differenza: include il controllo dei limiti:
int first = numbers.at(0); // Ottiene 10
int third = numbers.at(2); // Ottiene 30La differenza principale è la sicurezza: se provi ad accedere a un indice che non esiste, [] può causare un comportamento imprevedibile, mentre .at() genererà un'eccezione per avvisarti dell'errore. Ai fini dell'apprendimento, entrambi i metodi funzionano bene, ma .at() offre una protezione aggiuntiva contro l'accesso a posizioni non valide nel tuo vettore.
Sfida
FacileCrea un programma che dimostri l’accesso agli elementi di un vector recuperando elementi specifici da un vector sia con l’operatore delle parentesi quadre sia con il metodo .at().
Verranno forniti i seguenti input:
- Un intero
nche rappresenta il numero di elementi nel vector - Poi
ninteri da inserire nel vector - Un intero
index1che rappresenta il primo indice a cui accedere - Un intero
index2che rappresenta il secondo indice a cui accedere
Il programma deve:
- Creare un
std::vector<int>denominatodata - Usare
push_back()per aggiungere ciascuno deglinnumeri di input al vector - Accedere all’elemento all’indice
index1usando l’operatore delle parentesi quadre[]e memorizzarlo in una variabile denominatavalue1 - Accedere all’elemento all’indice
index2usando il metodo.at()e memorizzarlo in una variabile denominatavalue2 - Stampare i valori a cui si è acceduto e i relativi indici
- Stampare il primo e l’ultimo elemento del vector usando l’accesso basato sugli indici
Usa esattamente il seguente formato di output:
Element at index [index1]: [value1]
Element at index [index2]: [value2]
First element: [first value]
Last element: [last value]Per accedere all’ultimo elemento, usa data.size() - 1 come indice con l’operatore delle parentesi quadre.
Provalo tu
#include <iostream>
#include <vector>
using namespace std;
int main() {
// Leggi l'input
int n;
cin >> n;
vector<int> data;
// Leggi n interi e aggiungili al vettore
for (int i = 0; i < n; i++) {
int num;
cin >> num;
data.push_back(num);
}
int index1, index2;
cin >> index1;
cin >> index2;
// TODO: Scrivi il tuo codice qui sotto
// Accedi agli elementi usando l'operatore [] e il metodo .at()
// Memorizza i valori ottenuti in value1 e value2
// Mostra i risultati
cout << "Element at index " << index1 << ": " << value1 << endl;
cout << "Element at index " << index2 << ": " << value2 << endl;
cout << "First element: " << /* accedi al primo elemento */ << endl;
cout << "Last element: " << /* accedi all'ultimo elemento usando data.size() - 1 */ << endl;
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online