size ve at
- C++ kursu
- Başlangıç
- Ders 61/116
- 5 dk
.size() ve .at() ile vector yönetimini öğrenirsin.
size() ve at()
İki temel vektör yöntemi: size() eleman sayısını döndürür, at(i) i dizinindeki elemana erişir. nums.size() kaç eleman olduğunu, nums.at(0) ise ilk elemanı verir.
at ile [] arasındaki önemli fark: at sınırları denetler. Geçersiz dizin verirsen std::out_of_range hatası fırlatır; [] ise denetim yapmaz, geçersiz dizin tanımsız davranıştır. Güvenli erişim için at tercih edilir.
Sınır denetimi neden önemli?
Üç elemanlı bir vektörde nums.at(3) çağrısı hata fırlatır çünkü geçerli dizinler 0, 1, 2'dir. Bu, programın çökmeden önce anlamlı bir hata vermesini sağlar.
Aynı erişimi nums[3] ile yapsaydın denetim olmazdı; program belleğin rastgele bir yerine bakar, sonradan hatırlandığında izi sürülmesi zor hatalara yol açardı. Bu yüzden kullanıcıdan gelen dizinle çalışırken at daha güvenlidir.
Uygulama at() ile üç elemanı yazdır
std::vector<int> nums = {10, 20, 30}; tanımla. at(0), at(1) ve at(2) değerlerini std::cout ile aralarına boşluk koyarak tek satırda yazdır.
Başlangıç kodu
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {10, 20, 30};
// at() ile üç elemanı yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {10, 20, 30};
std::cout << nums.at(0) << " " << nums.at(1) << " " << nums.at(2) << std::endl;
return 0;
}Beklenen çıktı
10 20 30
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 size() ve at() eşle
| Kavram | Anlamı |
|---|---|
size() |
Eleman sayısı |
at(0) |
İlk eleman |
at(size-1) |
Son eleman |
out_of_range |
Sınır dışı hatası |
2 3 elemanlı vektörde nums.at(5) çağrısı ne yapar?
std::vector<int> nums = {10, 20, 30};
nums.at(5);- Tanımsız davranış
- std::out_of_range fırlatır Doğru cevap
- 5 döndürür
- 30 döndürür
Açıklama: at sınırları denetler, geçersiz dizinde std::out_of_range fırlatır.
3 at() ile ikinci elemana eriş
std::cout << nums.____(1) << std::endl;
std::cout << nums.at(1) << std::endl;
Açıklama: at(1) ikinci elemana erişir.