Стереть векторное стирание и push_back - PullRequest
0 голосов
/ 26 марта 2012

У меня следующий цикл:

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++;
}

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

1 Ответ

0 голосов
/ 26 марта 2012

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

...