2012-03-26 100 views
0

我有以下循环:STD向量的擦除和的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

找出最好的方法之一是编译并追踪它以检查您的逻辑 - 您将学到很多东西。就目前而言,我不相信它会编译,你的替换矢量元素可能不会在你期望的位置。此外,请检查vector :: insert()以插入另一个容器的范围。