1
我试图做一个条件增加过程中添加元素:怎样的for_each
std::for_each(foos.begin(), foos.end(),[&](Foo p){
if (p.passesSomeTest()){
p.change();
foos.push_back(p);
}
});
基本上,我有元素的列表,并使用这些元素,如果他们符合一定的条件下,我想创建它们的副本,稍微修改它,然后将其添加到相同的列表中。
我不需要我的for_each
来检查新添加的元素。
有什么办法可以使用stl来做到这一点吗?
这是不明智的,而你是遍历它来修改向量。 'push_back'可能会使所有迭代器失效。我现在懒得仔细研究这个标准,但如果你的代码没有表现出未定义的行为,我会感到惊讶。 –
当你在循环中使用它时,修改容器的想法不好。因为如果你修改列表你的迭代器变得不正确。 – Guinness
就我个人而言,我只是基于索引而不是迭代器的手写循环。 –