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

数字货币交易网站开发专门做饥饿营销的网站

数字货币交易网站开发,专门做饥饿营销的网站,网站开发工程师 上海,怎么建设门户网站前言: 上文我们学到右值引用及其移动语义,学习到了C11中对性能提升对重要的更新之一。C11进阶之路:右值引用和移动语义,让代码跑得更快!-CSDN博客 本文我们来讲讲,C11的下一个新语法:可变参数模…

前言:

        上文我们学到右值引用及其移动语义,学习到了C++11中对性能提升对重要的更新之一。C++11进阶之路:右值引用和移动语义,让代码跑得更快!-CSDN博客

        本文我们来讲讲,C++11的下一个新语法:可变参数模板

1.基本原理

       C++11支持可变参数模板。既支持可变参数的函数模板、可变模板参数的类模板。可变的参数被称为参数包。参数包分为两类:1. 模板参数包:包含零或多个模板参数。 2. 函数参数包:包含零或多个函数参数。

template <class ...Args> void Func(Args... args) {}
template <class ...Args> void Func(Args&... args) {}
template <class ...Args> void Func(Args&&... args) {}

      我们用三个省略号来表示函数参数或模板参数此时是一个参数包。在模板参数中,使用class + ...或typename + ...来表示此时的参数为参数包。 在函数参数中,类型名+ ... 表示此时的参数为参数包。当然在函数参数中,仍然可以像普通参数一样使用左值引用、右值引用,同时也遵守应用折叠。

        可变参数模板的本质其实就是在编译过程中对应的实例化出零或多个参数

        在可变参数模板中可以通过sizeof... 运算符得到可变参数模板中有几个参数。

#include<iostream>
using namespace std;//可变参数模板
template<class ...Args>
void Print(Args&&... agrs)
{//运算符sizeof...可以返回可变参数模板中有几个参数cout << sizeof...(agrs) << endl;
}int main()
{double x;Print();Print(1);Print(2.2,"xxxx");Print(2.2,"abc",x);
}

        其本质是实例化出了4个不同的Print函数

2.包扩展

        对于一个参数包,我们除了能计算它的参数个数,能做的唯一事情就是扩展它。当扩展一个包时,需要提供用于每个扩展元素的模式。扩展一个包的过程是将其分解为构成元素,对每个元素应用模式,从而获得扩展后的列表。我们通过在模式的右边放置一个省略号(...)来触发扩展操作。底层细节如下:

#include<iostream>
using namespace std;//展开方式一~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//当无参时,匹配此函数返回
void Print()
{return;
}//可变参数模板
template<class T,class ...Args>
void Print(T&& x,Args&&... agrs)
{//参数包的第一个匹配给xcout << x << " ";//剩下n-1的参数包,匹配给agrsPrint(agrs...);
}//展开方式二~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//获取参数包的第一个元素
template<class T>
int Getagrs(T&& t)
{cout << t << " ";return 0;
}template<class ...Agrs>
void list(Agrs&&... agrs)
{}template<class ...Agrs>
void Showlist(Agrs&&... agrs)
{//int a[] = { Getagrs(agrs)... };list(Getagrs(agrs)...);//函数实例化,不断展开:// -> list(Getagrs(x),Getagrs(y),Getagrs(z))
}//包扩展
int main()
{double x = 10;Print(2.2, "abc", x);cout << endl;// C/C++的函数参数,是从右向左进行压栈的Showlist(2.2, "abc", x);
}

3.emplace系列接口

template <class... Args>
void emplace_back (Args&&... args);template <class... Args>
iterator emplace (const_iterator position, Args&&... args);

        emplace是C++11提供的新类成员函数。主要由可变参数模板实现,其主要功能是插入数据。emplace_back相当于push_back,emplace相当于insert

        当然emplace的功能不仅仅的包含insert和push,emplace还支持插入时构造,比insert和push更加高效

int main()
{vector<pair<string,int>> arr;//先调用构造,构造出pair的临时对象。临时对象为右值,会调用移动构造将内容添加到vector中。arr.push_back({ "abc",3 });//直接传参,并在插入vector时直接构造arr.emplace_back("asd", 3);
}

        传递参数包过程中,如果是 Args&&... args 的参数包,要用完美转发参数包,方式如下 forward<Args>(args)... ,否则编译时包扩展后右值引用变量表达式就变成了左值了

        emplace兼容insert和push,并且比这两个更加高效,所以建议以后都使用emplace


文章转载自:

http://a5cbxpQ1.jtwck.cn
http://rg6vAwVd.jtwck.cn
http://t3maQOOZ.jtwck.cn
http://RUlJTvjo.jtwck.cn
http://NGon0o1d.jtwck.cn
http://fjDPqi58.jtwck.cn
http://9I5s5TUn.jtwck.cn
http://Uj0W0Bsp.jtwck.cn
http://CLtFR6ML.jtwck.cn
http://ic66DIe8.jtwck.cn
http://LdtEGUGX.jtwck.cn
http://7zTVmBU4.jtwck.cn
http://k1WNaoXN.jtwck.cn
http://RfSKIeRK.jtwck.cn
http://dU0XxvlS.jtwck.cn
http://CZt4oAnG.jtwck.cn
http://lI5qNUbg.jtwck.cn
http://5tSPWDvc.jtwck.cn
http://htcTANas.jtwck.cn
http://f0phtS3h.jtwck.cn
http://7SfvvXNs.jtwck.cn
http://IZF0UeqP.jtwck.cn
http://XFr9G0mH.jtwck.cn
http://T4UIv8jc.jtwck.cn
http://ZKv8YK9R.jtwck.cn
http://brNSmCVZ.jtwck.cn
http://c1tz8f1J.jtwck.cn
http://B0YsdMtX.jtwck.cn
http://SP3ZxYG6.jtwck.cn
http://DTyEY7eQ.jtwck.cn
http://www.dtcms.com/wzjs/634080.html

相关文章:

  • 中山做网站推广公司宝塔wordpress固定连接
  • 网站开发入门书籍2018东莞网络营销十年乐云seo
  • seo建站还有市场吗不断加强门户网站建设
  • 做音乐网站要求张氏万家网站建设
  • 网站后台如何登陆手机网站seo教程
  • 网站的关键词策略建湖做网站价格
  • 网站优化千牛帮黄石下陆区建设局网站
  • 个人备案网站类型个人申请注册公司需要多少钱
  • 伍佰亿营销型网站查看网站有多少空间
  • 个人网站一年多少钱十大网页游戏排行
  • nodejs做后端的网站10_10_微信里网站怎么做的
  • 企业网站建设 全包黑龙江省建设集团有限公司网站首页
  • 男女做那事视频免费网站偃师网站开发
  • 如何建设企业网站呢wordpress显示文章标题
  • 公司建设网站时的注意事项一个人完成网站建设
  • 重庆公司建站陕西网站开发联系方式
  • 百度验证网站境外电商平台排行榜
  • 如何免费做网站c 网站开发的好处
  • 义乌网站建设开发网上代做论文的网站
  • 网站美工设计基础wordpress邀请有奖
  • 临沂集团网站建设万国手表网站
  • 制作网站数据库wordpress建自己的网站
  • 去哪里找做网站建设网站个人简介范文
  • 做做做做网站新乡哪有做网站的
  • 济南网站定制策划百度怎么免费推广
  • 做好一个网站需要多久wordpress连阿里云域名
  • 濮阳网站设计公司三台网站seo
  • 网站建设中高低端区别网站导航如何优化
  • 微网站建设找哪家模板网站建设的弊端
  • 旅游网站分析中小企业加盟网站建设