Menu
Coddy logo textTech

Auf Elemente zugreifen

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 12 von 56.

Nachdem Sie nun Vektoren erstellen und Elemente hinzufügen können, müssen Sie wissen, wie Sie auf bestimmte Elemente aus Ihrem Vektor zugreifen. C++ bietet zwei Hauptmöglichkeiten für den Zugriff auf einzelne Elemente: den eckigen Klammeroperator und die .at()-Methode.

Der eckige Klammer-Operator [] funktioniert genau wie bei regulären Arrays. Sie geben den Index des Elements an, auf das Sie zugreifen möchten:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // Erhält 10
int third = numbers[2];    // Erhält 30

Die Methode .at() bietet eine alternative Möglichkeit, auf Elemente zuzugreifen, mit einem wichtigen Unterschied – sie beinhaltet eine Bereichsprüfung (Bounds-Checking):

int first = numbers.at(0);    // Liefert 10
int third = numbers.at(2);    // Liefert 30

Der entscheidende Unterschied ist die Sicherheit: Wenn Sie versuchen, auf einen Index zuzugreifen, der nicht existiert, kann [] unvorhersehbares Verhalten verursachen, während .at() eine Exception auslöst, um Sie auf den Fehler hinzuweisen. Für Lernzwecke funktionieren beide Methoden gut, aber .at() bietet zusätzlichen Schutz gegen den Zugriff auf ungültige Positionen in Ihrem Vector.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das den Zugriff auf Vektorelemente demonstriert, indem es bestimmte Elemente aus einem Vektor sowohl mit dem eckigen Klammeroperator als auch mit der Methode .at() abruft.

Die folgenden Eingaben werden bereitgestellt:

  • Ein Ganzzahlwert n, der die Anzahl der Elemente im Vektor darstellt
  • Anschließend n Ganzzahlen, um den Vektor zu füllen
  • Ein Ganzzahlwert index1, der den ersten zuzugreifenden Index darstellt
  • Ein Ganzzahlwert index2, der den zweiten zuzugreifenden Index darstellt

Ihr Programm sollte:

  1. Einen std::vector<int> namens data erstellen
  2. push_back() verwenden, um jede der n eingegebenen Zahlen zum Vektor hinzuzufügen
  3. Auf das Element bei index1 mit dem eckigen Klammeroperator [] zugreifen und es in einer Variable namens value1 speichern
  4. Auf das Element bei index2 mit der Methode .at() zugreifen und es in einer Variable namens value2 speichern
  5. Die abgerufenen Werte und ihre entsprechenden Indizes ausgeben
  6. Das erste und das letzte Element des Vektors mittels indexbasiertem Zugriff ausgeben

Verwenden Sie das folgende genaue Ausgabeformat:

Element at index [index1]: [value1]
Element at index [index2]: [value2]
First element: [first value]
Last element: [last value]

Verwenden Sie für den Zugriff auf das letzte Element data.size() - 1 als Index mit dem eckigen Klammeroperator.

Spickzettel

C++-Vektoren bieten zwei Hauptmöglichkeiten für den Zugriff auf einzelne Elemente:

Eckige-Klammern-Operator []:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // Liefert 10
int third = numbers[2];    // Liefert 30

Die .at()-Methode:

int first = numbers.at(0);    // Liefert 10
int third = numbers.at(2);    // Liefert 30

Der Hauptunterschied ist die Sicherheit: [] kann unvorhersehbares Verhalten verursachen, wenn auf ungültige Indizes zugegriffen wird, während .at() eine Exception für den Schutz durch Bereichsprüfung (Bounds-Checking) auslöst.

Um auf das letzte Element zuzugreifen, verwenden Sie data.size() - 1 als Index.

Probier es selbst

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // Eingabe lesen
    int n;
    cin >> n;
    
    vector<int> data;
    
    // Lese n Ganzzahlen und füge sie dem Vektor hinzu
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        data.push_back(num);
    }
    
    int index1, index2;
    cin >> index1;
    cin >> index2;
    
    // TODO: Schreibe deinen Code unten
    // Greife auf Elemente mit dem []-Operator und der .at()-Methode zu
    // Speichere die abgerufenen Werte in value1 und value2
    
    // Ergebnisse ausgeben
    cout << "Element at index " << index1 << ": " << value1 << endl;
    cout << "Element at index " << index2 << ": " << value2 << endl;
    cout << "First element: " << /* auf das erste Element zugreifen */ << endl;
    cout << "Last element: " << /* auf das letzte Element mit data.size() - 1 zugreifen */ << endl;
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf