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):
- Input Iterator: Öğeleri yalnızca bir kez okuyabilir (örneğin, akıştan giriş).
*it(okuma için),++it,it == başkadestekler. - Output Iterator: Öğeleri yalnızca bir kez yazabilir (örneğin, akışa çıktı).
*it(yazma için),++itdestekler. - Forward Iterator: Öğeleri tekrar tekrar okuyup yazabilir ve yalnızca ileriye doğru hareket edebilir.
*it(okuma/yazma),++it,it == başkadestekler. - Bidirectional Iterator: İleri ve geri hareket edebilir. Tüm Forward Iterator işlemlerini destekler ve ayrıca
--it. - 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 -= nit[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.