SORU
22 HAZİRAN 2011, ÇARŞAMBA


Yineleyici iptal kuralları

C konteynerler için yineleyici iptal kuralları nelerdir?

Özet bir liste biçiminde tercihen.

(Not: Bu Stack Overflow's C FAQ için bir giriş olarak tasarlanmıştır. Eğer bu formda bir SSS sağlama fikri tenkit etmek istiyorsanız, o zaman the posting on meta that started all this bunu yapmak için bir yer olurdu. Cevaplar soru izlenen C chatroom nereye SSS fikir başladı ilk başta, bu da senin cevabın çok muhtemel alın okuyun o kim buldu bu fikri.)

CEVAP
22 HAZİRAN 2011, ÇARŞAMBA


C 03(Kaynak: Iterator Invalidation Rules (C 03))


Ekleme

Sırası kaplar

  • vector: tüm kullanımına ve referanslar için önce noktanın ekleme etkilenmemiş, sürece yeni bir konteyner boyutu daha büyüktür önceki kapasitesi (bu durumda tüm kullanımına ve referanslar geçersiz) [23.2.4.3/1]
  • deque: Tüm kullanımına ve başvuruları geçersiz kılınır, sürece eklenen üye sona erdi (ön ya da arka), deque (bu durumda tüm kullanımına geçersiz kılınır, ama başvuruları unsurlardır etkilenmemiş) [23.2.1.3/1]
  • list: tüm kullanımına ve referanslar etkilenmemiş [23.2.2.3/1]

İlişkisel kaplar

  • [multi]{set,map}: Tüm kullanımına ve referanslar etkilenmemiş [23.1.2/8]

Kap adaptörleri

  • stack: temel kapsayıcı bir süreçtir
  • queue: temel kapsayıcı bir süreçtir
  • priority_queue: temel kapsayıcı bir süreçtir

Silme

Sırası kaplar

  • vector: geçersiz silme [23.2.4.3/3] bu noktadan sonra her yineleyici ve başvuru
  • deque: tüm kullanımına ve başvuruları geçersiz kılınır, sürece silinmiş üye en son (ön ya da arka), deque (bu durumda, yalnızca kullanımına ve referanslar için sildim üyesi geçersiz) [23.2.1.3/4]
  • list: kullanımına ve başvuruları geçersiz silinmiş öğe yalnızca [23.2.2.3/3]

İlişkisel kaplar

  • [multi]{set,map}: öğeleri geçersiz sildim [23.1.2/8] kullanımına ve başvurular sadece

Kap adaptörleri

  • stack: temel kapsayıcı bir süreçtir
  • queue: temel kapsayıcı bir süreçtir
  • priority_queue: temel kapsayıcı bir süreçtir

Yeniden boyutlandırma

  • Ekle/sil [23.2.4.2/6] göre. vector:
  • Ekle/sil [23.2.1.2/1] göre. deque:
  • Ekle/sil [23.2.2.2/1] göre. list:

NOT 1

Aksi belirtilmediği sürece(ya açıkça ya da bir fonksiyon tanımlayarak diğer fonksiyonlar açısından), çağırma konteyner üye işlev ya da geçen argüman olarak bir konteynerbir kütüphane işlevi geçersiz olmayacaktır yineleyicisiya da değerleri değiştirmek, bu kapsayıcı içindeki nesne. [23.1/11]

NOT 2

It's not clear in C 2003 whether "end" iterators are subject to the above rules; onlar, her neyse, varsayalım bu uygulamada olduğu gibi).

NOT 3

İşaretçiler iptal kuralları başvuruları iptal kuralları gibi şemeş.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Friday NightFort

    Friday Night

    15 EYLÜL 2011
  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009