我有我需要工作在元素的集合,在收集調用成員函數:使用STL找到一個向量的所有元素
std::vector<MyType> v;
... // vector is populated
對於調用不帶參數的功能,這是很直接的:
std::for_each(v.begin(), v.end(), std::mem_fun(&MyType::myfunc));
類似的事情可以,如果有一個參數我想調用該函數來完成。
我的問題是,我想調用向量中的元素的函數,如果它滿足某些條件。 std::find_if
將迭代器返回到滿足謂詞條件的第一個元素。
std::vector<MyType>::iterator it =
std::find_if(v.begin(), v.end(), MyPred());
我希望能夠找到滿足謂詞的所有元素並通過它們進行操作。
我一直在尋找的STL算法爲「find_all
」或「」等同,還是有辦法,我可以與現有的STL做到這一點(例如,我只需要重複一次),而不是滾動我自己或簡單地使用for循環和比較來執行標準迭代。
分區會工作在一般情況下,但對於這種特殊情況下,它不會工作,因爲向量不能改變。 – twokats 2008-11-07 20:34:11