我想知道如何實現標題中陳述的內容。我試着像...std :: for_each在具有1個參數的成員函數上
std::for_each(a.begin(), a.end(), std::mem_fun_ref(&myClass::someFunc))
,但我得到一個錯誤說的「術語」(I「M假設這意味着第三個參數)不計算爲一個函數參數1 ,即使someFunc
沒有采取一個參數 - 對象的類型存儲在a
。
我想知道如果我想要做的是可能使用標準庫(我知道我可以輕鬆地使用boost )
PS使用for_each
和mem_fun_ref
與只通過手動迭代a
並將對象傳遞給someFunc
相比,有任何性能影響?
我假設我會使用bind2nd。現在我正在考慮如何指定在迭代中使用當前元素。我想我只會使用提升.. – Person 2010-04-04 02:58:41
不,仍然使用bind1st。 mem_fun_ref變成一個帶有兩個參數的函數。第一個是MyClass,第二個是你的成員函數參數。您想要將第一個參數綁定到mem_fun_ref到您的類實例。 – Stephen 2010-04-04 03:50:12
@Person:如果你要使用Boost,我建議使用他們的foreach宏。 'std :: for_each'只是一個失敗的想法,並且通常會導致更多的擴展,更難以閱讀代碼。 – GManNickG 2010-04-04 03:52:14