如何在for_each期间添加元素

时间:2014-04-14 05:14:08

标签: c++ stl

我正在尝试进行条件添加

std::for_each(foos.begin(), foos.end(),[&](Foo p){
    if (p.passesSomeTest()){
        p.change();
        foos.push_back(p);
    }
});

基本上,我有一个元素列表,并使用这些元素,如果它们符合某些条件,我想创建它们的副本,稍微修改它,然后将它添加到同一个列表中。

我不需要for_each来检查新添加的元素。

有没有办法使用stl?

来做到这一点

1 个答案:

答案 0 :(得分:1)

使用临时列表使其更容易

std::for_each(foos.begin(), foos.end(),[&](Foo p){
    if (p.passesSomeTest()){
        p.change();
        foos2.push_back(p);  // insert to temporary foos2 list
    }
});

foos.insert(foos.end(), foos2.begin(), foos2.end());  // insert temporary list to foos