Soy nuevo en C++. Me gustaría saber cómo los codificadores experimentados hacen esto.cómo eliminar todos los enteros pares del conjunto <int> en C++
lo que tengo:
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);
}
y, por supuesto, que no funciona. porque itr se incrementa después de que se borre. ¿significa que Itr debe señalar el inicio del conjunto cada vez que elimine el elemento del conjunto?
Tiene un paréntesis adicional en el código. – qba
¿por qué se permite itr ++ en la función de borrado, pero no en el exterior? – Quincy
'itr ++' está permitido afuera, pero '++ it' es en general preferible cuando el valor no se usa, por razones tediosas para entrar cada vez que alguien lo hace ;-) En este caso, podría ser mejor ignore las buenas prácticas habituales y escriba 'itr ++', simplemente porque el código se lee un poco más suave si es el mismo en ambos casos. –