Menu
Coddy logo textTech

Elemanlara Erişme

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 12 / 56.

Artık vektörler oluşturabildiğinize ve onlara öğeler ekleyebildiğinize göre, vektörünüzden belirli öğeleri nasıl alacağınızı bilmeniz gerekir. C++ tekil öğelere erişmek için iki ana yol sunar: köşeli parantez operatörü ve .at() yöntemi.

Köşeli parantez operatörü [], tıpkı normal dizilerde olduğu gibi çalışır. Erişmek istediğiniz öğenin dizinini belirtirsiniz:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // 10 değerini alır
int third = numbers[2];    // 30 değerini alır

.at() yöntemi, elemanlara erişmek için önemli bir farkla alternatif bir yol sağlar - sınır kontrolü (bounds-checking) içerir:

int first = numbers.at(0);    // 10 değerini alır
int third = numbers.at(2);    // 30 değerini alır

Temel fark güvenliktir: var olmayan bir indekse erişmeye çalışırsanız, [] öngörülemeyen davranışlara neden olabilir, buna karşın .at() sizi hata konusunda uyarmak için bir istisna fırlatacaktır. Öğrenme amaçlı olarak her iki yöntem de iyi çalışır, ancak .at() vektörünüzdeki geçersiz konumlara erişime karşı ekstra koruma sağlar.

challenge icon

Görev

Kolay

Hem köşeli parantez operatörünü hem de .at() metodunu kullanarak bir vektörden belirli öğeleri alarak vektör öğesi erişimini gösteren bir program oluşturun.

Aşağıdaki girdiler sağlanacaktır:

  • Vektördeki öğe sayısını temsil eden bir tam sayı n
  • Vektörü doldurmak için n adet tam sayı
  • Erişilecek ilk indeksi temsil eden bir tam sayı index1
  • Erişilecek ikinci indeksi temsil eden bir tam sayı index2

Programınız şunları yapmalıdır:

  1. data adında bir std::vector<int> oluşturun
  2. Girdi olarak verilen n sayının her birini vektöre eklemek için push_back() kullanın
  3. Köşeli parantez [] operatörünü kullanarak index1 indeksindeki öğeye erişin ve bunu value1 adlı bir değişkende saklayın
  4. .at() metodunu kullanarak index2 indeksindeki öğeye erişin ve bunu value2 adlı bir değişkende saklayın
  5. Erişilen değerleri ve bunlara karşılık gelen indeksleri yazdırın
  6. İndeks tabanlı erişim kullanarak vektörün ilk ve son öğelerini yazdırın

Aşağıdaki tam çıktı formatını kullanın:

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

Son öğeye erişmek için, köşeli parantez operatörü ile indeks olarak data.size() - 1 kullanın.

Kopya kağıdı

C++ vektörleri, tekil öğelere erişmek için iki ana yol sunar:

Köşeli parantez operatörü []:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // 10 değerini alır
int third = numbers[2];    // 30 değerini alır

.at() metodu:

int first = numbers.at(0);    // 10 değerini alır
int third = numbers.at(2);    // 30 değerini alır

Temel fark güvenliktir: [] geçersiz dizinlere erişildiğinde öngörülemeyen davranışlara neden olabilirken, .at() sınır kontrolü koruması için bir istisna fırlatır.

Son öğeye erişmek için dizin olarak data.size() - 1 kullanın.

Kendin dene

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

int main() {
    // Girdiyi oku
    int n;
    cin >> n;
    
    vector<int> data;
    
    // n adet tam sayıyı oku ve vektöre ekle
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        data.push_back(num);
    }
    
    int index1, index2;
    cin >> index1;
    cin >> index2;
    
    // YAPILACAK: Kodunuzu aşağıya yazın
    // [] operatörünü ve .at() metodunu kullanarak elemanlara erişin
    // Erişilen değerleri value1 ve value2 değişkenlerinde saklayın
    
    // Sonuçları yazdır
    cout << "Element at index " << index1 << ": " << value1 << endl;
    cout << "Element at index " << index2 << ": " << value2 << endl;
    cout << "First element: " << /* ilk elemana erişin */ << endl;
    cout << "Last element: " << /* data.size() - 1 kullanarak son elemana erişin */ << endl;
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler