Yineleyici Kategorileri: input, forward, bidirectional, random
Yineleyici kategorilerini birbirinden ayırın ve bunlara uygun algoritmaları seçin
Yineleyici Kategorileri: input, forward, bidirectional, random, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Yineleyici Nedir?
Yineleyici, genelleştirilmiş bir işaretçidir. Algoritmalar yineleyiciler üzerinden çalışarak onları temel kapsayıcıdan bağımsız hâle getirir.
Beş Yineleyici Kategorisi
Yineleyiciler yeteneklerine göre sınıflandırılır:
- Girdi — yalnızca okunur, tek geçişli
- Çıktı — yalnızca yazılır, tek geçişli
- İleri — okuma/yazma, çok geçişli
- Çift yönlü — ileri ve geri hareket edebilir
- Rastgele erişim — bir tamsayı uzaklığı kadar atlayabilir
Girdi Yineleyicileri
Bir kez okuyun, ilerletin ve tekrarlayın. Yeniden ziyaret edemezsiniz. Örnek: std::istream_iterator.
std::istream_iterator<int> in(std::cin), end;
while (in != end) {
std::cout << *in << " ";
++in;
}Çıktı Yineleyicileri
Yalnızca yazma işlemi yapar. Örnek: std::ostream_iterator ve std::back_inserter.
std::ostream_iterator<int> out(std::cout, " ");
std::vector<int> v = {1, 2, 3};
std::copy(v.begin(), v.end(), out);İleri Yineleyiciler
Girdi yineleyicileri gibidir, ancak çok geçişlidir; aynı konumdan yeniden yineleyebilirsiniz. Örnek: std::forward_list.
Çift Yönlü Yineleyiciler
İleri yineleyicilere ek olarak -- işlemini destekler. Örnek: std::list, std::map, std::set.
std::list<int> l = {1, 2, 3};
auto it = l.end();
--it; // OK, points to last elementRastgele Erişim Yineleyicileri
Çift yönlü yineleyicilere ek olarak atlamaları destekler: it + n, it - n, it[k], it1 - it2. Örnek: std::vector, std::deque ve ham diziler.
Algoritma Gereksinimleri
Her algoritma, ihtiyaç duyduğu en düşük yineleyici kategorisini belirtir. std::sort rastgele erişim gerektirirken std::find yalnızca girdi yineleyicisi gerektirir.
Yineleyici Özellikleri
std::iterator_traits<Iter>, yineleyicinin değer türünü, kategorisini ve diğer özelliklerini derleme zamanında açığa çıkarır.
using Category = std::iterator_traits<It>::iterator_category;
using Value = std::iterator_traits<It>::value_type;std::advance ve std::distance
Bir yineleyiciyi genel biçimde ilerletin veya bir uzaklığı ölçün. Bu işlevler en verimli uygulamayı seçmek için kategoriyi kullanır.
auto it = v.begin();
std::advance(it, 5); // efficient on random access, O(n) otherwise
auto d = std::distance(v.begin(), it);Özel Yineleyiciler
Kendi yineleyicinizi yazmak için hedeflediğiniz kategoriye ilişkin gerekli tür takma adlarını ve işlemleri tanımlayın — operator*, operator++, operator== vb.
C++20 Yineleyici Kavramları
C++20, std::input_iterator, std::forward_iterator ve std::random_access_iterator gibi biçimsel kavramlar ekledi. Bunlar, etiket tabanlı eski sistemin yerini alır.
Hızlı Kontrol
Hangi yineleyici kategorisi it + n ifadesini sabit zamanda destekler?
Özet
Yineleyiciler yeteneklerine göre sınıflandırılır: girdi, çıktı, ileri, çift yönlü ve rastgele erişim. Algoritmalar en düşük kategoriyi gerektirir. Vektör yineleyicileri rastgele erişimlidir; liste ve eşlem yineleyicileri çift yönlüdür.
Sıkça Sorulan Sorular
“Yineleyici Kategorileri: input, forward, bidirectional, random” dersi ücretsiz mi?
Evet — “Yineleyici Kategorileri: input, forward, bidirectional, random” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Yineleyici Kategorileri: input, forward, bidirectional, random” dersinde ne öğreneceğim?
Yineleyici kategorilerini birbirinden ayırın ve bunlara uygun algoritmaları seçin C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Yineleyici Kategorileri: input, forward, bidirectional, random” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yineleyici Kategorileri: input, forward, bidirectional, random
- Yaygın Yineleyici Kalıpları: begin, end, advance
- C++20 Ranges Kütüphanesine Giriş
- Aralık Uyarlayıcıları: views::filter, views::transform, views::take