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
就我個人而言,我只是基於索引而不是迭代器的手寫循環。 –