2012-03-26 3 views
0

У меня есть следующий цикл:станд вектор Стирание и 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++; 
} 

ли это действительный цикл? То есть, я правильно стираю/добавляю элементы внутри цикла?

ответ

0

Один из лучших способов узнать это - собрать и проследить его, чтобы проверить свою логику - вы многое узнаете. Как бы то ни было, я не считаю, что это скомпилируется, и ваши замещающие векторные элементы, вероятно, не пойдут туда, где вы ожидаете. Кроме того, проверьте вектор :: insert() для вставки диапазона из другого контейнера.

Смежные вопросы