2012-03-26 8 views
0

Ich habe den folgenden Zyklus:std Vektor Lösch- und push_back

vector<int> vec; 
vector<int>::iterator it; 
// fill the vector with some values. func() is a boolean function on ints. 
// fill_vec() fills a vector of ints with some values. 
for (it = vec.begin(); it != vec.end();) 
{ 
    if (func(*it)) 
    { 
     vector<int> new_vec; 
     fill_vec(new_vec); 
     it = erase(it); 
     for (int j =0 ; j < new_vec.size(); j++) 
      vec.push_back(new_vec[j]); 
    } 
    else 
     it++; 
} 

Ist dies eine gültige Schleife? Das heißt, lösche/füge ich Elemente in der Schleife in der richtigen Weise hinzu?

Antwort

0

Eine der besten Möglichkeiten, herauszufinden, ist es zu kompilieren und zu verfolgen, um Ihre Logik zu überprüfen - Sie werden eine Menge lernen. So wie es aussieht, glaube ich nicht, dass es kompiliert wird, und Ihre Ersatzvektorelemente gehen wahrscheinlich nicht dahin, wo Sie es erwarten. Überprüfen Sie auch vector :: insert(), um einen Bereich aus einem anderen Container einzufügen.

Verwandte Themen