2010-06-21 86 views

回答

1

你將不得不創建一個仿函數「呼叫」的每個對象:

struct Caller { 
    int value; 
    void operator()(const YourFunctorHere& f) const { 
    f(value); 
    } 
} caller; 
std::for_each(functors.begin(), functors.end(), caller); 
+0

它也有繼承unary_function – 2010-06-21 11:44:12

+1

你不必寫仿函數,一個簡單的函數工作爲好。 – DaClown 2010-06-21 11:45:32

+0

您可能也會在某處使用 'bind2nd(mem_fun_ref(YourFHere :: memberfunction),4)'... – xtofl 2010-06-21 11:47:48

1

哪個版本的C++? C++ 0x Lambdas使這個簡短而甜美。

在C++ 03中,for循環將比for_each簡單。

要在C++ 03中使用for_each,您需要創建一個函數,將所有輸入參數存儲在成員變量中並將其傳遞給for_each。向量中的每個函數都將作爲參數傳遞給此訪問函數,然後需要使用存儲的參數調用它的operator()。