Menu
Coddy logo textTech

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 30

Il 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 30

La 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.

challenge icon

Sfida

Facile

Crea 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 n che rappresenta il numero di elementi nel vector
  • Poi n interi da inserire nel vector
  • Un intero index1 che rappresenta il primo indice a cui accedere
  • Un intero index2 che rappresenta il secondo indice a cui accedere

Il programma deve:

  1. Creare un std::vector<int> denominato data
  2. Usare push_back() per aggiungere ciascuno degli n numeri di input al vector
  3. Accedere all’elemento all’indice index1 usando l’operatore delle parentesi quadre [] e memorizzarlo in una variabile denominata value1
  4. Accedere all’elemento all’indice index2 usando il metodo .at() e memorizzarlo in una variabile denominata value2
  5. Stampare i valori a cui si è acceduto e i relativi indici
  6. 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;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C++ online