CodeBlanks Logo Icon CodeBlanks

Iterator nedir?

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

main.cpp
#include <iostream>
#include <vector>

int main() {
    std::vector<int> v = {10, 20, 30};
    // Iterator al ve while ile yazdir
    return 0;
}

Örnek çözüm

main.cpp
#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?

main.cpp
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

Soru
auto it = v.begin();
while (it != v.end()) {
    std::cout << ____;
    ++it;
}
Cevap
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

Orta seviye bölümündeki tüm dersler