2012-01-15 13 views
12

Giriş yineleyicileri ve salt okunur ileticiler arasındaki fark nedir?Giriş yineleyicileri ve salt okunur ileticiler arasındaki fark nedir?

İkincisi salt okunur olduklarından, çıkış yineleyicileriyle ilgili gereksinimleri karşılamıyorlar. Ve bundan dolayı, yineleyicileri ek güvencelerle (varsa) etkin bir şekilde girerler. Sorun şu, hangi ek garantiler?

Tahmin ettiğim, ileri yineleyiciler çok geçişli ve giriş yineleyicileri değil, doğru muyum?

cevap

20

Evet, giriş yineleyicileri tek geçişli yineleyicilerdir. İteratörler çok geçişli iken, yalnızca bunları bir kez yineleyebilirsiniz. §24.2.3 [input.iterators] p2 (the table) kaynaktan

, ++r öncesi/hedefşart kolon:

ön: r dereferenceable olup.
posta: r dereferenceable veya r, uçtan uca bitti.
gönderi: r'un önceki değerinin herhangi bir kopyasının artık kullanılamaz olması veya == etki alanında olması gerekmez.

son hedefşart a == b için, ++a == ++btrue olması gerekli olmadığını ima eder.
Aynı hüküm, paragraf 3:

[Not: girdi yineleyiciler için, b == ++ bir == ++ b anlamına gelmez. (Eşitlik, ikame mülkünü veya referans şeffaflığı garanti etmez.) Giriş yineleyicileri üzerindeki algoritmalar, hiçbir zaman iki kez aynı yineleyiciden geçmeyi denememelidir. tek geçişli algoritmaları olmalıdır. [...] Bu algoritmalar, istream_iterator sınıfı şablon aracılığıyla giriş verilerinin kaynağı olarak istyonlar ile kullanılabilir. -end not]

§24.2.5 [forward.iterators]

p1 A sınıfı veya işaretçi türü X Sağlama, bir ileri Yineleyici şartlar

  • [...]
  • nesneler halinde kaynaktan X tipi, aşağıda açıklanan çoklu geçiş garantisini sunar.

    • a == b eder ++a == ++b ve
    • X sivri tipte bir ya da ifade (void)++X(a), *a eşdeğerdir:

    p3 iki dereferenceable yinelemeler ve tip X b halinde çok geçişli garanti sunmak *a ifadesine.

+5

nedenle tipik örnekler, bir akış yineleyici (tek-geçişli bir giriş-yineleyici) olabilir ve bir tek başına bağlantılı liste (çok geçişli ileri yineleyici) – jalf

+0

ah, bu arada, bir upboat sahiptir. +1 – jalf

İlgili konular