Я новичок в C++. Я хотел бы знать, как это делают опытные кодеры.как удалить все четные целые числа из набора <int> в C++
то, что у меня есть:
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);
}
и, конечно же, он не работает. потому что itr увеличивается после его стирания. означает ли это, что Itr должен указывать на начало набора каждый раз после стирания элемента из набора?
У вас есть дополнительная скобка в коде. – qba
Почему itr ++ допускается в функции стирания, но не снаружи? – Quincy
'itr ++' разрешен снаружи, но '++ it' в целом предпочтительнее, когда значение не используется, из-за причин, из-за которых утомительно идти в каждый раз, когда кто-либо это делает ;-) В этом случае было бы лучше игнорируйте обычную хорошую практику и пишите 'itr ++', просто потому, что код читается чуть более гладко, если в обоих случаях он одинаковый. –