J'ai un std::set
et je dois effacer des éléments adjacents similaires:Iterate et effacer elments de std :: set
DnaSet::const_iterator next = dna_list.begin();
DnaSet::const_iterator actual = next;
++next;
while(next != dna_list.end()) // cycle over pairs, dna_list is the set
{
if (similar(*actual, *next))
{
Dna dna_temp(*actual); // copy constructor
dna_list.erase(actual); // erase the old one
do
{
dna_temp.mutate(); // change dna_temp
} while(!dna_list.insert(dna_temp).second); // insert dna_temp
}
++actual;
++next;
}
Parfois, le programme ne peut pas sortir de la boucle principale. Je pense que le problème se produit lorsque j'efface le dernier élément du dna_list
. Quelle est la bonne façon de faire cette tâche?
oui, c'est le bug, merci –