'da nasıl kaldırılır C++ 'da yeni. Kodlayıcıların bunu nasıl yaptığını bilmek isterim.set <int> setindeki tüm tamsayılar C++
Elimde ne:
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);
for(set<int>::iterator itr = s.begin(); itr != s.end(); ++itr){
if (!(*itr % 2))
s.erase(itr);
}
ve tabii
, bu işe yaramaz. çünkü silinir sonra itr artırılır. , elemanın setten çıkarılmasından sonra her zaman setin başlangıcına işaret etmesi anlamına mı geliyor?
Kodda fazladan parantez var. – qba
itr ++ neden silme fonksiyonuna izin verilir, fakat dışarıda değil mi? – Quincy
'itr ++' dışarısı için izin verilir, ancak '+ + ', değeri kullanılmadığında genel olarak tercih edilir, çünkü herkesin yaptığı her seferinde zamanın yorucu olmasının nedenleri ;-) Bu durumda, daha iyi olabilir. olağan iyi uygulamaları görmezden gel ve 'itr ++' yaz, çünkü her iki durumda da aynı olsa, kod biraz daha yumuşak okur. –