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ırTemel 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.
Görev
KolayHem 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
nadet 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:
dataadında birstd::vector<int>oluşturun- Girdi olarak verilen
nsayının her birini vektöre eklemek içinpush_back()kullanın - Köşeli parantez
[]operatörünü kullanarakindex1indeksindeki öğeye erişin ve bunuvalue1adlı bir değişkende saklayın .at()metodunu kullanarakindex2indeksindeki öğeye erişin ve bunuvalue2adlı bir değişkende saklayın- Erişilen değerleri ve bunlara karşılık gelen indeksleri yazdırın
- İ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ırTemel 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;
}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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme