Sobes.tech
Junior

Standart Şablon Kütüphanesi (STL) içinde bir yineleyici nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

STL'deki iterator, bir konteynerin (örneğin, vector, list, map) öğelerine sıralı erişim sağlayan, iç yapıyı ortaya çıkarmadan genel bir kavramdır. Bu, bir öğeye işaret eden bir göstergeye benzer, ancak kategoriye bağlı olarak ek özelliklere sahiptir.

İteratörün temel işlevleri:

  • Mevcut öğeye erişim (*it).
  • Bir sonraki öğeye geçiş (++it).
  • Başka bir iterator ile karşılaştırma (örneğin, dizinin sonunu belirlemek için it != end()).

İteratör kategorileri (özelliklerin genişleme sırasına göre):

  1. Input Iterator: Öğeleri yalnızca bir kez okuyabilir (örneğin, akıştan giriş). *it (okuma için), ++it, it == başka destekler.
  2. Output Iterator: Öğeleri yalnızca bir kez yazabilir (örneğin, akışa çıktı). *it (yazma için), ++it destekler.
  3. Forward Iterator: Öğeleri tekrar tekrar okuyup yazabilir ve yalnızca ileriye doğru hareket edebilir. *it (okuma/yazma), ++it, it == başka destekler.
  4. Bidirectional Iterator: İleri ve geri hareket edebilir. Tüm Forward Iterator işlemlerini destekler ve ayrıca --it.
  5. Random Access Iterator: Bir adımda rastgele sayıda öğeye hareket edebilir (işaretçiler gibi). Tüm Bidirectional Iterator işlemlerini destekler ve ayrıca:
    • it + n, it - n (n öğe hareketi)
    • it += n, it -= n
    • it[n] (n kaydırmalı öğeye erişim)
    • it < başka, <=, >, >= (konum karşılaştırması)

Kullanım örneği:

#include <vector>
#include <iostream>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};

    // Konteynerin başlangıcına iterator al
    std::vector<int>::iterator it = v.begin();

    // Iterator kullanarak öğeleri dolaş
    while (it != v.end()) {
        std::cout << *it << " "; // Öğeye erişmek için iterator'ü çözümle
        ++it; // Sonraki öğeye geç
    }
    std::cout << std::endl; // Çıktı: 1 2 3 4 5

    return 0;
}

İteratörler, belirli konteyner türü üzerinde soyutlama sağlar ve STL algoritmalarının farklı veri türleriyle ortak çalışmasını mümkün kılar.