如何在for_each期间添加元素

How to add elements during for_each

本文关键字:添加 元素 each for      更新时间:2023-10-16

我正在尝试执行条件添加:

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

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

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

有什么方法可以用stl做到这一点吗?

使用临时列表简化

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