iterators stl
STL'deki Yineleyicilere Tam Bir Genel Bakış.
Bu eğitimde yineleyicilerin ayrıntılarına, türlerine, avantajlarına ve destekledikleri çeşitli işlevlere bakacağız.
online anime izlemek için en iyi web sitesi
Yineleyici nedir? Genel olarak, bir yineleyici, bir dizi veya bir kap gibi bir veri aralığındaki belirli bir öğeyi işaret eden herhangi bir nesne gibidir. Yineleyici, C'deki bir işaretçi gibidir.
=> Tüm C ++ Eğitim Serisini Burada Arayın.
Ne öğreneceksin:
- Genel Bakış
- Yineleyici Türleri
- Yineleyicilerin Avantajları
- Yineleyici İşlevleri
- Sonuç
- Önerilen Kaynaklar
Genel Bakış
STL'de bir yineleyici, artırma operatörü (++) veya dereference operatörü (*) gibi bir dizi işleç kullanılarak konteynerdeki öğeler arasında gezinmek veya adım adım ilerlemek için kullanılabilen bir nesnedir.
Yineleyiciler, kapların içinde depolanan verilere erişmeye ve bunları değiştirmeye ek olarak, algoritmaları kaba bağlamada önemli bir rol oynadıkları için STL programlamasında çok önemlidir.
Yineleyici Türleri
Yineleyiciler tarafından uygulanan işlevselliğe bağlı olarak aşağıdaki şekilde sınıflandırılırlar:

- Giriş ve Çıkış Yineleyicileri : Bunlar en basitleştirilmiş yineleme türleridir. Tek geçiş içeren sıralı girdi-çıktı işlemlerinde en kullanışlıdırlar.
- İleri Yineleyiciler : Bunlar tıpkı girdi yineleyiciler gibidir, ancak bir yöne sahiptirler, yani yönlendirme yönündeki bir aralıktan geçmek için kullanılabilecekleri anlamda ileri yöne sahiptirler. İleri yineleyiciler sabit olmadığında, çıktı yineleyicileri olarak da kullanılabilirler. Çoğu standart STL kapsayıcısı, en azından ileri yineleyicileri destekler.
- Çift Yönlü Yineleyiciler : Bunlar, iki yönlü olmaları arasındaki tek farkla ileri yineleyicilere benzer. Bu, bu çift yönlü yineleyicileri hem ileri hem de geri yönde aralıkta dolaşmak için kullanabileceğimiz anlamına gelir.
- Rastgele Erişim Yineleyiciler : Rastgele erişim yineleyiciler, tüm yineleyiciler arasında en güçlü olanıdır. Bunlar sıralı olmayan yineleyicilerdir. Rastgele erişimli yineleyiciler, her öğeden sıralı olarak geçmek zorunda kalmadan mevcut değere bir ofset uygulayarak herhangi bir rastgele değere erişmemize izin verir. C'deki İşaretçiler gibi benzer özellikler gösterirler.
Dikkat edilmesi gereken bir nokta, tüm STL konteynerlerinin tüm yineleyicileri desteklememesidir. Farklı kapsayıcılar, işlevsellik gereksinimlerine bağlı olarak farklı yineleyicileri destekler.
Farklı yineleyiciler kullanan kapsayıcıların listesi aşağıdadır:
| Konteynerler | Yineleyiciler |
|---|---|
| Harita | Çift yönlü |
| Yığın | Yineleyici yok |
| Kuyruk | Yineleyici yok |
| Öncelik Kuyruğu | Yineleyici yok |
| Liste | Çift yönlü |
| Vektör | Rasgele erişim |
| ve | Rasgele erişim |
| Çoklu harita | Çift yönlü |
| Ayarlamak | Çift yönlü |
| Çoklu set | Çift yönlü |
Yineleyicilerin Avantajları
Yineleyiciler, özellikle farklı aralıklar ve kapsayıcılar kullanarak programlama yaparken son derece kullanışlıdır.
Programlamada yineleyiciler kullanmanın avantajlarından bazıları aşağıda özetlenebilir:
# 1) Kodun Yeniden Kullanılabilirliği
Programımızdaki öğelere erişmek için yineleyiciler kullandığımız sürece, yineleyici tanımımızdaki kabın adını değiştirebilir ve kabı değiştirmemiz gerektiğinde kodun geri kalanını benzer şekilde kullanabiliriz.
Bu, özellikle bir liste kabı kullanarak bir vektör kabını değiştirmeyi planladığımız senaryolarda yararlıdır. Yineleyiciler yerine () operatörünü kullansaydık, öğelere erişim kodu, kapsayıcıları değiştirdiğimizde işe yaramazdı.
# 2) Programlama Kolaylığı ve Rahatlığı
Yineleyiciler, konteynerin içeriğine kolay ve rahat bir şekilde erişmemize ve erişmemize yardımcı olan çeşitli yerleşik işlevlerle birlikte gelir.
Örneğin () operatörlerini kullanırken yapmamız gereken listenin sonunu veya dizinin sonunu kontrol etmeye devam etmemize gerek yok ve program kodunu, öğe eklemek istediğimiz zamanki gibi değiştirmemiz gerekiyor ve bunları bir döngü için değiştirmemiz gerekiyor .
Yineleyicileri kullanırken, yineleyicilerin begin () ve end () işlevlerine, listenin sonuna geldiğimizde sekme tutmak zorunda kalmadan doğrudan erişebiliriz ve ayrıca bunları bir döngü için değiştirmemiz gerekmez.
# 3) Dinamik Ekle / Kaldır
Yineleyicileri kullanırken, () operatörlerinde yapmamız gerektiği gibi öğeleri kaydırmak zorunda kalmadan konteynırdaki öğeleri kolayca ve dinamik olarak ekleyebilir veya kaldırabiliriz.
Bunu aşağıdaki Örnek ile gösterelim:
#include #include using namespace std; int main() { vector vec1 = { 1, 1, 2 }; // Declaring an iterator vector::iterator i; // Inserting element for (i = vec1.begin(); i != vec1.end(); ++i) { if (i == vec1.begin()) { i = vec1.insert(i, 3); // insert 3 at the beginning of vec1 } } // contents of vec1 3 1 1 2 cout<<'Vector contents after addition'; cout< Çıktı:
Eklemeden sonra vektör içeriği
3 1 1 2
Silme sonrası vektör içeriği
3 1 2
Yukarıdaki örnekte görüldüğü gibi, yineleyiciler kullanarak, değişen öğelerin karmaşık programlamasına ve kabı yeniden yapılandırmaya gerek kalmadan bir konteynere (bu durumda vektör) kolayca öğe ekleyip çıkarabileceğimizi görüyoruz.
Yineleyici İşlevleri
Yineleyiciler yerleşik yapılar olduğundan, yineleyici nesneler üzerinde yapılabilecek çeşitli işlemleri desteklerler. Bu işlemler / işlevler, aralıkta verimli bir şekilde geçiş yapmamıza ve ayrıca konteynerin içindeki öğeleri manipüle etmemize izin verir.
Şimdi yineleyicilerin desteklediği birkaç büyük işlem göreceğiz.
- başla: Yineleyicinin ilk veya başlangıç konumunu döndürür.
- son: Yineleyicinin son konumunu veya 'sondan sonraki' konumunu verir.
- önceki: Bağımsız değişkende verilen konumların sayısını azalttıktan sonra yeni yineleyiciyi döndürür.
- Sonraki: Bağımsız değişkende verilen konumların sayısını ilerlettikten veya artırdıktan sonra yeni yineleyici döndürür.
- yerleştirici: Bir kapta herhangi bir belirli konuma eleman ekler.
- ilerlemek: Yineleyici konumunu bağımsız değişkende verilen belirtilen sayıya yükseltir.
Bu işlevin / işlemin bazılarının kullanımını aşağıdaki programda göstereceğiz:
#include #include #include using namespace std; int main() { vector v = { 1, 1,2,3,5 }; // declaring iterators to a vector vector::iterator itr1 = v.begin(); vector::iterator itr2 = v.end(); auto it = next(itr1, 2); // displaying iterator position cout << 'Using next() the new iterator is at: '; cout << *it << ' '; cout << endl; auto it1 = prev(itr2, 2); // displaying iterator position cout << 'The position of new iterator using prev() is: '; cout << *it1 << ' '; cout << endl; //advance advance(itr1,3); // displaying iterator position cout << 'After advance operation,itr1 is positioned at: '; cout << *itr1 << ' '; cout << endl; return 0; } Çıktı:
Next () kullanarak yeni yineleyici: 2
Prev () kullanan yeni yineleyicinin konumu: 3
İleri işlemden sonra, itr1 şu konuma yerleştirilir: 3
Yukarıdaki programı kullanarak çeşitli yineleyici işlemlerinin kullanımını gösterdik.
Sonuç
Böylece Yineleyicilerle ilgili bu öğreticinin sonuna geldik.
Şimdiye kadar STL'nin temellerini tartıştık, bir sonraki eğitimimizden itibaren STL kapsayıcıları ve programlamaları ile başlayacağız.
=> Tam C ++ ÜCRETSİZ Eğitim Serisini Buradan Kontrol Edin.
Önerilen Kaynaklar