Iterator nedir?
- C++ kursu
- Orta seviye
- Ders 59/116
- 5 dk
Iterator'ın ne olduğunu ve container ile ilişkisini öğrenirsin.
Iterator nedir?
Bir iterator, kapsayıcıdaki (container) öğelere işaretçi benzeri erişim sağlayan nesnedir. İşaretçiler gibi * ile dereference edilir, ++ ile bir sonraki öğeye geçilir ve != ile karşılaştırılır.
Örnek: std::vector<int> v = {10, 20, 30}; kapsayıcısı için auto it = v.begin(); ilk öğeye iterator döndürür. *it ile 10 değerini okursun. ++it sonraki öğeye geçer. Iterator, kapsayıcı türünden bağımsız tek bir döngü yazmanı sağlar.
Dereference ve ilerletme
Bir iterator'ın temel iki işlemi vardır. *it ile üstünde durduğu öğeyi okur ya da yazarsın. ++it ile bir sonraki öğeye geçersin. Bu ikisi, döngü gövdesini oluşturur.
Örnek bir döngü: auto it = v.begin(); while (it != v.end()) { std::cout << *it << " "; ++it; }. Burada it != v.end() koşulu, iterator son öğeyi geçene kadar döngüyü sürdürür. *it her adımda öğeyi yazdırır, ++it ise sonraki öğeye ilerletir. Böylece kapsayıcının tüm öğeleri tek tek ekrana gelir.
Uygulama Iterator ile vektörü yazdır
v = {10, 20, 30} vektörü için v.begin() ile iterator al ve while döngüsünde her öğeyi *it ile yazdır. Her öğeden sonra boşluk bırak.
Başlangıç kodu
#include <iostream>
#include <vector>
int main() {
std::vector<int> v = {10, 20, 30};
// Iterator al ve while ile yazdir
return 0;
}Örnek çözüm
#include <iostream>
#include <vector>
int main() {
std::vector<int> v = {10, 20, 30};
auto it = v.begin();
while (it != v.end()) {
std::cout << *it << " ";
++it;
}
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 Hangi işlem her iterator'da geçerli DEĞİLDİR?
auto it = v.begin();- it + 2 ile offset almak Doğru cevap
- ++it ile ilerlemek
- *it ile öğeye erişmek
- it != v.end() ile karşılaştırmak
Açıklama: it + 2 yalnızca rastgele erişim iterator'da geçerlidir.
2 Döngü gövdesinde öğeyi yazdır
auto it = v.begin();
while (it != v.end()) {
std::cout << ____;
++it;
}
auto it = v.begin();
while (it != v.end()) {
std::cout << *it;
++it;
}
Açıklama: *it ile iterator'ın gösterdiği öğeye erişirsin.
3 İşlemi rolüne eşle
| Kavram | Anlamı |
|---|---|
auto it = v.begin() |
İlk öğeye iterator |
*it |
Öğeye erişim |
++it |
Sonraki öğeye geç |
it != v.end() |
Döngü koşulu |