bind2nd的注意事項 zz

2021-09-05 20:40:31 字數 398 閱讀 5598

bind2nd 的第一引數是乙個函式 (假設為f), 那麼 f 的引數不可以為引用, 比如,

class stock

;list l;

l.push_back(...);

...find_if(l.begin(), l.end(), bind2nd(mem_fun_ref(&stock::hasname), "shell")); // 這個是正確的

find_if(l.begin(), l.end(), bind2nd(mem_fun_ref(&stock::hasname_2), "shell")); // 這個是錯誤的, 不能通過編譯

這是因為 bind2nd 第二個引數也是引用, 如果 f 的引數也是引用, 那麼在 bind2nd 的內部, 就會出現引用的引用, 所以會產生編譯錯誤。

Bind2nd原始碼解析

例 transform coll1.begin coll1.end back inserter coll2 bind2nd multiplies 10 1 呼叫模板函式bind2nd,第乙個引數為multiplies臨時物件。template function bind2nd templateinl...

Bind2nd原始碼解析

例如 include include include include using namespace std intmain int argc,char ar 接著下面有bind2nd的具體實現 cout count if coll.begin coll.end bind2nd greater in...

STL中bind2nd的用法

比如我們有下面的類 class clxecs 和下面的乙個vector vector clxecs vecs for inti 0 i 13 i 如果要對容器vecs中的所有物件都進行dosomething 的操作,可以用下面的方法 for each vecs.begin vecs.end mem ...