Add 标准向量擦除和推回

Add 标准向量擦除和推回,add,stdvector,erase,Add,Stdvector,Erase,我的周期如下: 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 ( f

我的周期如下:

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++;
}
vec;
向量::迭代器;
//用一些值填充向量。func()是整数上的布尔函数。
//fill_vec()用一些值填充整数向量。
for(it=vec.begin();it!=vec.end();)
{
if(func(*it))
{
向量新向量;
填充向量(新向量);
它=擦除(它);
对于(int j=0;j

这是一个有效的循环吗?也就是说,我是否以正确的方式删除/添加循环中的元素?

最好的方法之一是编译并跟踪它,以检查您的逻辑-您将学到很多东西。就目前情况而言,我认为它不会编译,而且您的替换向量元素可能不会达到您预期的效果。另外,请检查vector::insert()以从另一个容器插入范围