还剩5页未读,继续阅读
文本内容:
C++标准bind函数用法与C简单实现电脑资料在看C++标准程序库书中,看到bind1st,bind2nd及bind的用法,当时就有一种熟悉感,仔细想了下,是F#里提到的柯里化,下面来看一个简单的例子void multinta,int b{couta:ab:bendl;a+=b;}void test24{using namespacestd::placeholders;vector list;int i=0;generate_nback_inserterlist,10,[i]{return i++;};for_eachlist.begin,list.end,bindmult,_1,10;for_eachlist.begin,list.end,bindmult,100,_1;copylist.begin,list.end,ostream_iterator cout,;}在这,for_each最后接受一个void funint p的函数做参数,p就是我们的每次遍历的数据,而在这我们用到mu lt,带有二个参数在这我们就要用到柯里化,把mult转成前面的vo idfunintp的形式,下面我们看下相应函数如何工作我们先来看下bind1st,这个相当于做了如下事fa,b-fab.简单来说,就是把带二个参数的函数变成只带一个参数的函数的过程bind2nd如上,类似fa,b-fba.而bind的用法更广,不限制个数,参数顺序和函数类型等上面第一个for_each中bind的用法就相当于bind2nd,第二个就相当于bind1st.下面再来看个小例子void test23{using namespacestd::placeholders;auto func=[]int x,string y{return to_stringx+y;};auto f=bindfunc,1,_1;auto fs=bindfunc,_1,xx;auto...。