Aracılığıyla paylaş


Iterators

stl tesis çeşitli algoritmalar ve bağlı işlem sıraları arasında çelişkili Yineleyicilerde yaygın kullanımı olun.Bu türü için gerekli Yineleyicilerde kategorisini Yineleyici türüne (veya kendi öneki) adını gösterir.Kategoriler, güç artan sırada özetlenir burada olarak:

  • Çıktı.Çıkış Yineleyici X yalnızca bir değeri olabilen V sonra hangi BT üzerinde dolaylı depolanan gerekir artýrýlýr sonraki deposu önce gibi (*X++ = V), (*X = V, ++X), veya (*X = V, X++).

  • Giriş.Giriş bir yineleyici X sıra sonuna gösteren tekil bir değeri gösterebilir.Giriş bir yineleyici sıra bitiş değerine eşit değil karşılaştırırsanız, bir değeri olabilen V üzerinde dolaylı erişilen herhangi bir sayı olarak da bir kaç kez (V = *X).Sonraki değeri veya sıra sonuna ilerleme için onu gibi artan ++X, X++, veya (V = *X++).Giriş bir yineleyici herhangi bir kopyasını artan bir kez kopya hiçbiri güvenle, dereferenced ya da artan bundan sonra karşılaştırılabilir.

  • İleriye doğru.İleriye doğru bir yineleyici X yazmak için bir çıkış Yineleyici veya okumak için bir giriş Yineleyici yerini alabilir.Ancak okuyabilirsiniz (aracılığıyla V = *X) yalnızca yazdığınız (aracılığıyla *X = V) ileriye doğru bir yineleyici üzerinden.Ayrıca, her biri başvuru yapıldı ve bağımsız olarak artýrýlýr bir ileriye doğru Yineleyici birden çok kopyasını yapabilirsiniz.

  • Çift yönlü.Çift yönlü Yineleyici X ileri bir yineleyici yerini alabilir.Ancak aynı zamanda bir çift yönlü Yineleyici olarak--YapıcınızdaX, X--, veya (V = *X--).

  • Rasgele erişim.Rasgele erişimli Yineleyici X çift yönlü Yineleyici yerini alabilir.Bir nesne işaretçisi üzerinde gerçekleştirebileceğiniz bir rasgele erişim Yineleyici üzerinde çok aynı tamsayı aritmetiği de gerçekleştirebilirsiniz.For N, an integer object, you can write xN,x + N,x - N, and N + X.

Not nesne işaretçisi rasgele erişim Yineleyici ya da diğer bir yineleyici yerini alabilir.Tüm Yineleyicilerde atanan veya kopyalanır.Bunlar hafif nesneler olarak kabul edilir ve sık geçirilen ve değerine göre başvuru tarafından döndürülen.Ayrıca, daha önce açıklanan işlemlerin hiçbiri üzerinde geçerli bir yineleyici gerçekleştirildiğinde, bir özel durum yaratabiliyorsa unutmayın.

Yineleyici kategoriler hiyerarşisini üç sıralarını göstererek özetlenebilir.Bir sıra için salt yazılır erişimi için herhangi birini kullanabilirsiniz:

output iterator
   -> forward iterator
   -> bidirectional iterator
   -> random-access iterator

Sağ ok "tarafından değiştirilebilir." anlamına gelir. İçin bir çıkış Yineleyici bir ileriye doğru Yineleyici ile güzelce gibi çalışma, çağıran herhangi bir algoritma ancak değil şekilde gerçekleştirebilirsiniz.

Bir sıra için salt okunur erişim için herhangi birini kullanabilirsiniz:

input iterator
   -> forward iterator
   -> bidirectional iterator
   -> random-access iterator

Giriş bir yineleyici tüm kategoriler en zayıf bu durumda olur.

Son olarak, bir sıra için okuma/yazma erişimi için herhangi birini kullanabilirsiniz:

forward iterator
   -> bidirectional iterator
   -> random-access iterator

Onu atar sırasına uygun okuma/yazma erişimi destekliyorsa, herhangi bir yineleyici kategori sunabilmeniz için nesne işaretçisi her zaman bir rasgele erişim Yineleyici hizmet verebilir.

Bir yineleyici Iterator dışında bir nesne işaretçisini de uzmanlığı tarafından gerekli üye türlerinin tanımlamalısınız iterator_traits<Iterator>.Bu gereksinimler türetmek tarafından karşılanabileceği Not Iterator ortak Temel sınıftan Yineleyici.

Yineleyicilerde, bu "cebiri" standart şablon Kitaplığı'nda neredeyse şey için temelini oluşturur.Promises ve her bir yineleyici kategori sınırlamaları Yineleyicilerde kapsayıcılar ve stl algoritmaları tarafından nasıl kullanıldığını görmek için anlamak önemlidir.

[!NOT]

Ayrıca Her, içinde stl Koleksiyonlar üzerinde dolaşmak için.Daha fazla bilgi için bkz. Nasıl yapılır: her stl koleksiyonu ile üzerinden yineleme.

Visual C++Şimdi teklifleri Yineleyicilerde ve hata ayıklama Yineleyicilerde kendi kapsayıcısının sınırları üzerine değil emin olmak için kontrol.Daha fazla bilgi için, bkz. İşaretli Yineleyiciler ve Hata ayıklama Yineleyici desteği.

Ayrıca bkz.

Başvuru

Standart Şablon Kütüphanesi

Standart C++ Kitaplığı'nda iş parçacığı güvenliği