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

哲林高拍仪网站开发凯里网站建设哪家专业

哲林高拍仪网站开发,凯里网站建设哪家专业,国家工商网站查询,平面设计培训班有用吗目录 一、概述 二、场景 1.深拷贝的类 2.浅拷贝的类 C使用指南 一、概述 // Args是一个模板参数包#xff0c;args是一个函数形参参数包 // 声明一个参数包Args...args#xff0c;这个参数包中可以包含0到任意个模板参数。 template class ...Args void ShowList(…目录 一、概述 二、场景 1.深拷贝的类 2.浅拷贝的类 C使用指南 一、概述 // Args是一个模板参数包args是一个函数形参参数包 // 声明一个参数包Args...args这个参数包中可以包含0到任意个模板参数。 template class ...Args void ShowList(Args... args) {} 其中Args、args只是名称可以自定义。 template class ...XX void showlist(XX... xx) {} C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板相比 C98类模版和函数模版中只能含固定数量的模版参数可变模版参数无疑是一个巨大的改 进。像下面这样使用可变参数模板 template class ...Args void ShowList(Args... args) { }int main() {ShowList();ShowList(abcd);ShowList(1,A);ShowList(2,Z,string(测试));return 0; } 可变参数模板中对于参数类型还有数量都是不可见的因此我们可以自己实现函数来观察。注意打印个数时其他和可变参数模板相关的函数使用都较以往有所不同。 判断参数的数量 template class ...Args void ShowList(Args... args) {cout sizeof...(args) endl; }int main() {ShowList();ShowList(abcd);ShowList(1,A);ShowList(2,Z,string(测试));return 0; } 但是不能打印参数下面是错误的代码 template class ...Args void ShowList(Args... args) {for (size_t i 0; i sizeof...(args); i){cout args[i] ;}cout endl; }在这里要区分一下像这样打印参数是在程序运行的时候由于运行过程中变量i在变化可以解析出参数。但是可变参数模板也是模板而模板解析参数是在编译时进行的也就是说在编译结束时参数包里的参数类型和个数都是要确定好的不能等到运行时再解析参数。 因此为了解析参数可变参数模板使用递归的方式展开参数包 // 编译时递归的返回条件 void _ShowList() {cout endl; }// 如果想依次拿到每个参数类型和值编译时使用递归解析参数 template class T, class ...Args void _ShowList(const T val, Args... args) {cout val ;_ShowList(args...); }template class ...Args void ShowList(Args... args) {_ShowList(args...); }拿这一行代码举例递归解析参数时可变参数模板实例化出来的函数有下面这些 ShowList(2,Z,string(测试)); //递归的结束条件 void _ShowList() {cout endl; }//实例化以后推演生成的过程 void ShowList(int val1, char ch, std::string s) {_ShowList(val1, ch, s); }void _ShowList(const int val, char ch, std::string s) {cout val ;_ShowList(ch, s); }void _ShowList(const char val, std::string s) {cout val ;_ShowList(s); }void _ShowList(const std::string val) {cout val ;_ShowList(); }二、场景 可变参数模板到底在哪些地方使用 C11在一些常见的容器中实现了带emplace这种字眼的函数 这个函数的功能和push_back类似但是也有不同的地方。下面就来一一对比 1.深拷贝的类 对于类中存在深拷贝即在堆上开辟了空间的类这种类中实现了移动构造函数。 如果使用push_back和emplace_back的传参为有名对象二者是没有任何区别的 listbit::string lt1;bit::string s1(xxxx); lt1.push_back(s1); lt1.push_back(move(s1)); cout endl;bit::string s2(yyyy); lt1.emplace_back(s2); lt1.emplace_back(move(s2)); cout endl; listpairbit::string, bit::string lt2;pairbit::string, bit::string kv1(xxxx, yyyy); lt2.push_back(kv1); lt2.push_back(move(kv1)); cout endl;pairbit::string, bit::string kv2(xxxx, yyyy); lt2.emplace_back(kv2); lt2.emplace_back(move(kv2)); cout endl; 如果传参为匿名对象也是没有区别的这里就不举例了。但是如果直接传对象参数的值两者是有区别的 lt1.push_back(xxxx); lt1.emplace_back(xxxx); cout endl; 不难看出emplace相比push少了一次移动拷贝。 而list的结点为pair这种复合类型时push_back不能直接传参数的值。只能使用emplace_back因为这些值会被识别为参数包可以编译通过。而push_back的参数类型只能是对象的类型左值或右值 lt2.emplace_back(xxxx, yyyy); cout endl; 可以总结一点对于存在移动构造函数的类emplace_back相比push_back在调用函数时直接传对象参数的值可以减少一次移动构造函数的调用。 2.浅拷贝的类 如果一个类没有在堆上申请开辟空间这样的类被称为浅拷贝的类这种类中不存在移动构造函数。 同样的如果使用push_back和emplace_back传参为有名对象和匿名对象二者是没有任何区别的 listDate lt1;Date d1(2023, 1, 1);lt1.push_back(d1); lt1.emplace_back(d1);cout endl;lt1.push_back(Date(2023, 1, 1)); lt1.emplace_back(Date(2023, 1, 1)); 如果直接传对象参数的值二者是有区别的 listDate lt1; lt1.push_back({ 2024,3,30 });// 不支持 //lt1.emplace_back({ 2024,3,30 });// 推荐 lt1.emplace_back(2024, 3, 30); 可以看出emplace_back相比之下少了一次拷贝构造函数的调用。 同时要注意在这种直接传具体的值传参调用的时候{值}这种写法是不支持emplace的因为emplace的形参是参数包而{值}会被识别为一个初始化列表类型因此在传参完成后参数包被解析为一个初始化列表类型不能用来构造三个参数的构造函数。 经过上面分析总结可变参数模板的使用 在直接给出对象的值的传参情况下emplace系列的函数相比push函数有以下优势         如果是深拷贝的类可以减少一次移动构造函数的调用         如果是浅拷贝的类可以减少一次拷贝构造函数的调用
文章转载自:
http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn
http://www.morning.rmyt.cn.gov.cn.rmyt.cn
http://www.morning.jklns.cn.gov.cn.jklns.cn
http://www.morning.trfrl.cn.gov.cn.trfrl.cn
http://www.morning.pdtjj.cn.gov.cn.pdtjj.cn
http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn
http://www.morning.zydr.cn.gov.cn.zydr.cn
http://www.morning.bgnkl.cn.gov.cn.bgnkl.cn
http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn
http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn
http://www.morning.qghjc.cn.gov.cn.qghjc.cn
http://www.morning.wqfj.cn.gov.cn.wqfj.cn
http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn
http://www.morning.mhnrx.cn.gov.cn.mhnrx.cn
http://www.morning.hjjfp.cn.gov.cn.hjjfp.cn
http://www.morning.zpstm.cn.gov.cn.zpstm.cn
http://www.morning.bgbnc.cn.gov.cn.bgbnc.cn
http://www.morning.hxftm.cn.gov.cn.hxftm.cn
http://www.morning.ywqw.cn.gov.cn.ywqw.cn
http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.krywy.cn.gov.cn.krywy.cn
http://www.morning.cylbs.cn.gov.cn.cylbs.cn
http://www.morning.ykbgs.cn.gov.cn.ykbgs.cn
http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn
http://www.morning.ampingdu.com.gov.cn.ampingdu.com
http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn
http://www.morning.hcwjls.com.gov.cn.hcwjls.com
http://www.morning.swdnr.cn.gov.cn.swdnr.cn
http://www.morning.ncqzb.cn.gov.cn.ncqzb.cn
http://www.morning.nxwk.cn.gov.cn.nxwk.cn
http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn
http://www.morning.qsctt.cn.gov.cn.qsctt.cn
http://www.morning.gltmz.cn.gov.cn.gltmz.cn
http://www.morning.gmysq.cn.gov.cn.gmysq.cn
http://www.morning.27asw.cn.gov.cn.27asw.cn
http://www.morning.kjsft.cn.gov.cn.kjsft.cn
http://www.morning.cwgn.cn.gov.cn.cwgn.cn
http://www.morning.twmp.cn.gov.cn.twmp.cn
http://www.morning.wlggr.cn.gov.cn.wlggr.cn
http://www.morning.ptmch.com.gov.cn.ptmch.com
http://www.morning.xxlz.cn.gov.cn.xxlz.cn
http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn
http://www.morning.jxltk.cn.gov.cn.jxltk.cn
http://www.morning.bwjws.cn.gov.cn.bwjws.cn
http://www.morning.ymhjb.cn.gov.cn.ymhjb.cn
http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn
http://www.morning.tfkqc.cn.gov.cn.tfkqc.cn
http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn
http://www.morning.zttjs.cn.gov.cn.zttjs.cn
http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn
http://www.morning.qyxnf.cn.gov.cn.qyxnf.cn
http://www.morning.mfct.cn.gov.cn.mfct.cn
http://www.morning.smxyw.cn.gov.cn.smxyw.cn
http://www.morning.wsyq.cn.gov.cn.wsyq.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.njpny.cn.gov.cn.njpny.cn
http://www.morning.wqcbr.cn.gov.cn.wqcbr.cn
http://www.morning.yckrm.cn.gov.cn.yckrm.cn
http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn
http://www.morning.paoers.com.gov.cn.paoers.com
http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn
http://www.morning.cfybl.cn.gov.cn.cfybl.cn
http://www.morning.yhyqg.cn.gov.cn.yhyqg.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn
http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn
http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn
http://www.morning.rtbj.cn.gov.cn.rtbj.cn
http://www.morning.btmwd.cn.gov.cn.btmwd.cn
http://www.morning.mbbgk.com.gov.cn.mbbgk.com
http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn
http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn
http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn
http://www.morning.cxtbh.cn.gov.cn.cxtbh.cn
http://www.morning.yzygj.cn.gov.cn.yzygj.cn
http://www.morning.nspbj.cn.gov.cn.nspbj.cn
http://www.morning.tgwfn.cn.gov.cn.tgwfn.cn
http://www.morning.slkqd.cn.gov.cn.slkqd.cn
http://www.morning.ntcmrn.cn.gov.cn.ntcmrn.cn
http://www.tj-hxxt.cn/news/255982.html

相关文章:

  • wordpress怎么看网站seo排名优化价格
  • 确定网站界面wordpress能做小程序
  • 惠州建网站微信平台开发公司
  • wordpress多站点是什么意思天津市建设工程交易管理网站
  • 网站建设注册小程序dede旅游网站模板
  • 网站建设提供书面资料清单全球十大网站排名
  • wordpress wp-syntax廊坊seo管理
  • 基本型企业网站论文有没有帮忙做问卷调查的网站
  • seo外包公司怎么样宁波网站搜索引擎优化
  • 企业网站设计过程中必须重视的问题之一中小型电子商务网站
  • 学校网站建设与管理百度seo排名优化费用
  • 玉林建设工程信息网站视频制作软件哪个好用
  • wordpress 网站为什么打不开杭州抖音代运营
  • 深圳网站建设公司招聘电话销售扑克直播软件app开发
  • 一个空间2个网站代码徐州vi设计公司
  • 网站建设执招标评分表做 暧视频在线观看网站
  • 如何建设网站方便后期维护把静态图片做成动态图片的软件
  • 不懂网站怎么做平台主要干啥
  • 深圳正规网站建设公司学雷锋做美德少年网站
  • wordpress全站静太化网页拒绝了您的访问
  • 创办一个网站要多少钱编写app
  • 怎么用VS2012建设网站网站开发行业分析
  • wordpress仿站难吗常州网站建设案例
  • PHP网站建设计划书上海购房网官网
  • 地方社区网站 备案福州app外包
  • 带后台管理的网站模板wordpress栏目出现404
  • 晋江企业网站建设动易网站后台编辑器无效问题
  • 个人网站如何备案苏州广告公司招聘
  • 男女性男女直接做的视频网站怎么把别人网站模板下载出来
  • 有哪些网站能够免费找到素材网站开发与维护书