std::list<>::splice
yapmanın ardındaki mantığın yeni kapsayıcıya eklenmiş olan alt dizeye başvuran yineleyicileri geçersiz kılmasının ne olduğunu merak ediyorum. Bu, özellikle standart std::container::swap
spesifikasyonunun ışığında bana mantıksız geliyor. Dil standardına göre std::container::swap
hiçbir yineleyici geçersiz kılmaz. Bu kesinlikle makul bir pratik özelliktir. Bununla birlikte, std::list<>::splice
'un yineleyici koruma davranışından büyük ölçüde fayda sağlayacağını söyleyebilirim. Ben yineleyici erişilebilirlik vb kavramlar üzerinde Ama aynı zamanda splice
de dayalı bazı tamamen akademik hususlar olabileceğini anlıyoruzstd :: list <> :: ekleme, yineleyicileri geçersiz kılar. Gerekçe?
muhtemelen bunun için özel olarak uyarlanmış şartname olmaz sağlanması anlamına gelen bir std::list
ya spesifik bir işlemdir Genel olarak STL tasarımında ciddi bir kavramsal hasar meydana getirir.
Peki, neydi? Fark edemediğim std::list
'un bazı pratik uygulamalarını yasadışı mı yoksa aşırı mı uyguluyor?
[splice() 'ın std :: list ve yineleyici geçersiz kılınması için olası kopyası] (http://stackoverflow.com/questions/143156/splice-on-stdlist-and-iterator-invalidation) – jwismar