std矢量擦除和push_back

时间:2012-03-26 15:22:02

标签: 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 ( 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 :(得分:0)

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