当前位置: 首页 > news >正文

编程开源网站广东网络品牌建站公司

编程开源网站,广东网络品牌建站公司,兰州市城市建设设计院官网,企业网站优化三层含义文章目录 bindbind函数模板的原型bind 包装器的用途其他使用示例 #x1f396; 博主的CSDN主页#xff1a;Ryan.Alaskan Malamute #x1f4dc; 博主的代码仓库主页 [ Gitee ]#xff1a;ryanala [GitHub]#xff1a; Ryan-Ala bind bind也是一种函数包装器#xf… 文章目录 bindbind函数模板的原型bind 包装器的用途其他使用示例 博主的CSDN主页Ryan.Alaskan Malamute 博主的代码仓库主页 [ Gitee ]ryanala      [GitHub] Ryan-Ala bind bind也是一种函数包装器也叫做适配器。它可以接受一个可调用对象生成一个新的可调用对象来 “ 适应 ” 原对象的参数列表C中的bind本质是一个函数模板。 std::bind 函数定义在头文件 functional 中是一个函数模板它也有点像上面的包装器适配器接受一个可调用对象函数/函数名、仿函数对象、lambda 表达式然后生成一个新的可调用对象来“适应”原对象的参数列表。一般而言我们用它可以把一个原本接收 N 个参数的可调用对象 Func通过绑定一些参数返回一个接收 M 个通常 M N参数的新函数。另外使用 std::bind 模板还可以修改参数的传参顺序。 具体说的话bind 可以去给可调用对象通常是静态成员函数参数列表中的参数指定缺省值或者更改形参的接收顺序然后生成一个新的可调用对象来“适应”原对象的参数列表。 bind函数模板的原型 头文件#includefunctional template class Fn, class... Args/* unspecified */ bind (Fn fn, Args... args); 带返回类型 2 template class Ret, class Fn, class... Args/* unspecified */ bind (Fn fn, Args... args);模板参数说明 fn可调用对象。args...要绑定的参数列表值或占位符。 bind 包装器的用途 可以调整参数的顺序 int sub(int a,int b) { return a-b; } int main() {functionint(int,int) f1 Sub;coutf1(10,5)endl;//计算得出结果 5using namespace std::placeholders;functionint(int,int) f2 bind(Sub,placeholders::_2,placeholders::_1);coutf2(10,5)endl;//计算的得出结果-5//将Sub函数给bind包装器后可以改变参数的顺序但是需要用到 placeholders::_2 // 此时对应函数在调用时 第二个参数放到第一位置 }调整参数个数 //调整参数个数 using namespace std::placeholders; functionint(int,int) f2 bind(Sub,20,placeholders::_1); coutf2(5)endl; //这里Sub函数的第一个操作数就为20不变了 //可以使有些参数写死using namespace std::placeholders;int main(void) {void confun(int a, int b, int c);auto con bind(confun, 3, _2, _1); //第一个参数绑定指定的函数后面的参数为绑定函数的参数列表con(5,4); //之后可以这样调用原函数且有些参数在绑定时给死 } void confun(int a,int b,int c) {cout a a ends b b ends c c endl; }bind包装器的意义 将一个函数的某些参数绑定为固定的值让我们在调用时可以不用传递某些参数。可以对函数参数的顺序进行灵活调整。 其他使用示例 // bind example #include iostream // std::cout #include functional // std::bind// a function: (also works with function object: std::dividesdouble my_divide;) double my_divide (double x, double y) {return x/y;}struct MyPair {double a,b;double multiply() {return a*b;} };int main () {using namespace std::placeholders; // adds visibility of _1, _2, _3,...// binding functions:auto fn_five std::bind (my_divide,10,2); // returns 10/2std::cout fn_five() \n; // 5auto fn_half std::bind (my_divide,_1,2); // returns x/2std::cout fn_half(10) \n; // 5auto fn_invert std::bind (my_divide,_2,_1); // returns y/xstd::cout fn_invert(10,2) \n; // 0.2auto fn_rounding std::bindint (my_divide,_1,_2); // returns int(x/y)std::cout fn_rounding(10,3) \n; // 3MyPair ten_two {10,2};// binding members:auto bound_member_fn std::bind (MyPair::multiply,_1); // returns x.multiply()std::cout bound_member_fn(ten_two) \n; // 20auto bound_member_data std::bind (MyPair::a,ten_two); // returns ten_two.astd::cout bound_member_data() \n; // 10return 0; }
http://www.w-s-a.com/news/836674/

相关文章:

  • 做网站需要自己上传产品吗企业网站系统设计
  • wordpress个人中心济南网站建设和优化
  • 网站pc端网址和手机端网址建设牡丹江 网站建设
  • 苏州新区城乡建设网站人才招聘网站开发
  • 一般网站是怎么做的威远移动网站建设
  • 赣州网站开发公司怎么才能设计好一个网站
  • 个人网站建设分几个步走培训网站开发哪个好
  • 智能网站价格河北城乡建设网站
  • 做动画在线观看网站网上花店 网站源代码
  • 做网站项目体会商业信息
  • 深圳的设计网站谷歌浏览器下载手机版官网
  • 苏州网站建设都找全网天下外贸响应式网站设计
  • 揭阳专业做网站网站迁移教材
  • 手机上怎么上传网站吗工程信息网站建设
  • 用手机建网站微信手机网站流程
  • 专注软件优化分享的网站梧州网页设计
  • 长春火车站和高铁站是一个站吗公司名称注册查询系统
  • 便利的集团网站建设网页的依托网站
  • 茶叶网站建设题库制作助手app
  • 网站建设栏目层级北京网站搭建公司电话
  • 网站开发运营经理打开百度竞价页面是网站是什么
  • 国内最专业的设计网站建设现在用什么语言做网站
  • 湖南网站开发 岚鸿象山县建设工程招投标网站
  • 长沙免费网站排名wordpress 教学
  • 专门做app的网站html代码是什么
  • 临沂网站制作建设欧米茄表官网
  • 北京模板网站开发全包网站建设的第三方平台
  • 在凡科做的网站怎么推广网页模板下载 免费 html
  • 有关网站建设的标题仿亿欧网wordpress
  • 网站建设公司销售招聘常用的搜索引擎有哪些?