2012年1月17日 星期二

mem_fun_ref, for_each

在試著使用for_each 的時候, 發現了一些問題
也把for_each 的定義看過了一遍, 也更加了解其工作原理

for_each 的第三個參數
要怎麼寫才會漂亮呢

1. static function
2. member function
3. lambda function

看其定義


for (; _ChkFirst != _ChkLast; ++_ChkFirst)
_Func(*_ChkFirst);
return (_Func);

這個function 會以 *_ChkFirst 為參數
所以只能用 static function

void aa ( *_ChkFirst )
{ ... };

for_each(  ,  , aa );

用 member function 的話, 則會失敗, 因為member function 會隱含性地多加 this
參數

用 static member function 的話則ok
for_each(  ,   , &class::static_mem_function );

不想上面這種方法時就要用到 mem_fun_ref 或 mem_fun
此時這個 member function 不用有 ( *_CheckFirst ) 這個參數