Sadece aşağıdaki kodu yazılı ve derleme değil çok şaşırdım ettik: Gördüğünüz gibi, eğer varsaNiçin destek geri yineleyicileri silmez?
std::deque<int> container;
// filling the container...
for (auto it = container.rbegin(); it != container.rend(); ++it)
if (*it == 5)
{
container.erase(it);
break;
}
, ben, belli kriterleri son öğe silmek istiyorum.
hata İlk başta
std :: deque :: silme (STD :: reverse_iterator çağrısına için eşleşen işlevi ...
olduğunu içindi galiba etmedi . ters iterasyon neden, ama bu gerçekten bunu çözer begin
/end
ile rbegin
/rend
değiştirilmesi beri böyledir
Yani, 2 soru:
- Bu neden desteklenmiyor? C++ komitesinin standartlara dahil etmeyi unutduğu küçük şeylerden mi yoksa bu aşırı yüklenmede eksiklik mi var?
- İstediğimi yapmanın en zarif yolu nedir? İndeks ile yinelenen takılı mıyım?
için de geçerli olduğunu görmek kolaydır. Cevabınızın burada olduğunu düşünüyorum: http://stackoverflow.com/questions/1830158/how-to-call-erase-with-a-reverse- yineleyici –
'm_container' ve 'container ', aynı mı? – ZDF
@ZDF: evet, tabii ki, sabit. –