2012-03-26 6 views
0

私は、次のサイクルがありますSTDベクトルの消去や一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

あなたのロジックをチェックするために、コンパイルしてトレースするのがベストな方法の1つです。それが立っているので、私はそれがコンパイルされるとは思わないし、あなたの交換ベクトル要素は、おそらくあなたが期待するところに行っていないだろう。また、別のコンテナから範囲を挿入するにはvector :: insert()をチェックしてください。

関連する問題