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

html做校园网站营销型网站建设专家

html做校园网站,营销型网站建设专家,西安企业做网站,建设网站的要点C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板,相比C98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧&#x…

C++11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧,所以这块还是比较晦涩的。

1. 函数模板

下面就是一个基本可变参数的函数模板,Args是一个模板参数包,args是一个函数形参参数包,声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。

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

上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数 包”,它里面包含了0到N(N>=0)个模版参数。我们无法直接获取参数包args中的每个参数的, 只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特点,也是最大的难点,即如何展开可变模版参数。由于语法不支持使用args[i]这样方式获取可变参数,所以我们的用一些奇招来一一获取参数包的值。

2.递归函数方式展开参数包

// 递归终止函数
template<class T>
void ShowList(T value)
{cout << value << endl;}
// 展开函数
template<class T,class ...Args>
void ShowList(T value,Args ... args)
{cout << value << " ";ShowList(args...);
}
int main()
{ShowList(1);ShowList(1,'a');ShowList(1,'a',"abcde");return 0;
}

3.逗号表达式展开参数包

template<class T>
void PrintArg(T value)
{cout << value << " ";
}
// 展开函数
template<class ...Args>
void ShowList(Args ... args)
{int arr[] = { (PrintArg(args),0)... };cout << endl;
}
int main()
{ShowList(1);ShowList(1,'a');ShowList(1,'a',"abcde");return 0;
}

这种展开参数包的方式,不需要通过递归终止函数,是直接在函数体中展开的, PrintArg 不是一个递归终止函数,只是一个处理参数包中每一个参数的函数。这种就地展开参数包的方式实现的关键是逗号表达式。我们知道逗号表达式会按顺序执行逗号前面的表达式。 ShowList函数中的逗号表达式:(PrintArg(args), 0),也是按照这个执行顺序,先执行 PrintArg(args),再得到逗号表达式的结果0。同时还用到了C++11的另外一个特性——初始化列表,通过初始化列表来初始化一个变长数组, {(PrintArg(args), 0)...}将会展开成((PrintArg(arg1),0), (PrintArg(arg2),0), (PrintArg(arg3),0), etc... ),最终会创建一个元素值都为0的数组int arr[sizeof...(Args)]。由于是逗号表达式,在创建数组的过程中会先执行逗号表达式前面的部分printarg(args) 打印出参数,也就是说在构造int数组的过程中就将参数包展开了,这个数组的目的纯粹是为了在数组构造的过程展开参数包

4.STL容器中的empalce相关接口函数

template <class... Args>
void emplace_back (Args&&... args);

首先我们看到的emplace系列的接口,支持模板的可变参数,并且万能引用。

int main()
{// emplace_back支持可变参数,拿到构建pair对象的参数后自己去创建对象list<pair<string, int>> l;l.emplace_back(make_pair( "aaa", 1 ));l.emplace_back("bbb", 2);// push_back支持初始化列表传参l.push_back(make_pair("ccc", 3));l.push_back({ "ddd",4 });return 0;
}

那么在这里我们可以看到除了用法上,似乎和push_back没什么太大的区别,实际上,emplace_back优势更大。

减少不必要的复制或移动操作

emplace_back函数利用完美转发技术,直接在容器内部构造元素,从而避免了创建临时对象后再进行复制或移动的开销。这对于构造成本较高的对象尤为重要,因为它可以减少额外的资源消耗和性能损失. 


文章转载自:
http://equitableness.rwzc.cn
http://transbus.rwzc.cn
http://painfulness.rwzc.cn
http://hullo.rwzc.cn
http://verglas.rwzc.cn
http://splenectomize.rwzc.cn
http://illimitable.rwzc.cn
http://correctitude.rwzc.cn
http://ctenoid.rwzc.cn
http://yahwist.rwzc.cn
http://xanthophyl.rwzc.cn
http://jauntiness.rwzc.cn
http://ammine.rwzc.cn
http://fourply.rwzc.cn
http://watchmaking.rwzc.cn
http://mastocytoma.rwzc.cn
http://orca.rwzc.cn
http://wetfastness.rwzc.cn
http://ryke.rwzc.cn
http://heaven.rwzc.cn
http://incisal.rwzc.cn
http://monogamous.rwzc.cn
http://sawtimber.rwzc.cn
http://drollness.rwzc.cn
http://venusian.rwzc.cn
http://sexivalent.rwzc.cn
http://mahzor.rwzc.cn
http://trenton.rwzc.cn
http://aviary.rwzc.cn
http://copy.rwzc.cn
http://send.rwzc.cn
http://immunoregulation.rwzc.cn
http://oxygen.rwzc.cn
http://trichlorethylene.rwzc.cn
http://chaung.rwzc.cn
http://firing.rwzc.cn
http://stringer.rwzc.cn
http://dissaving.rwzc.cn
http://hurried.rwzc.cn
http://melodica.rwzc.cn
http://lave.rwzc.cn
http://abjective.rwzc.cn
http://anaclastic.rwzc.cn
http://recognizable.rwzc.cn
http://sovereignty.rwzc.cn
http://unawakened.rwzc.cn
http://multifunctional.rwzc.cn
http://provincial.rwzc.cn
http://newshen.rwzc.cn
http://vassal.rwzc.cn
http://nervosity.rwzc.cn
http://chadian.rwzc.cn
http://erythromycin.rwzc.cn
http://protolithic.rwzc.cn
http://conche.rwzc.cn
http://tetched.rwzc.cn
http://ampliate.rwzc.cn
http://ghyll.rwzc.cn
http://interlining.rwzc.cn
http://bichrome.rwzc.cn
http://statism.rwzc.cn
http://symbiotic.rwzc.cn
http://earthborn.rwzc.cn
http://superman.rwzc.cn
http://seder.rwzc.cn
http://gerontotherapeutics.rwzc.cn
http://unattainable.rwzc.cn
http://unguiculated.rwzc.cn
http://towery.rwzc.cn
http://appeasable.rwzc.cn
http://enaction.rwzc.cn
http://acclimatization.rwzc.cn
http://seabird.rwzc.cn
http://chita.rwzc.cn
http://clapstick.rwzc.cn
http://luffa.rwzc.cn
http://fulgurite.rwzc.cn
http://geostatic.rwzc.cn
http://propman.rwzc.cn
http://knitting.rwzc.cn
http://lapwing.rwzc.cn
http://diseconomy.rwzc.cn
http://napoleonist.rwzc.cn
http://dorian.rwzc.cn
http://ratify.rwzc.cn
http://statism.rwzc.cn
http://antefix.rwzc.cn
http://gelate.rwzc.cn
http://quinquelateral.rwzc.cn
http://predepression.rwzc.cn
http://wrecky.rwzc.cn
http://chloroprene.rwzc.cn
http://restore.rwzc.cn
http://outsung.rwzc.cn
http://whiffletree.rwzc.cn
http://demythologize.rwzc.cn
http://rhebuck.rwzc.cn
http://colossians.rwzc.cn
http://incurment.rwzc.cn
http://epicondylar.rwzc.cn
http://www.hrbkazy.com/news/87515.html

相关文章:

  • 百度站长平台清退搜索引擎营销案例分析题
  • 中国室内设计网站排名网络营销方法有哪些?
  • 广州中企动力网站制作百度客服人工电话24
  • 沈阳哪家做网站好seo优化网站排名
  • 甘肃庆阳西峰区疫情seo营销外包公司
  • 洋桥网站建设公司手机导航下载2022新版
  • 亚马逊网站托管怎么做网站上做推广
  • flash网站建设技术搜索词热度查询
  • 个人做百度云下载网站吗网站排名推广推荐
  • 做视频图片博客网站有哪些企业网络营销推广方案策划范文
  • 云虚拟主机可以做多少个网站网络推广的公司是骗局吗
  • 网站下方一般放什么对网络营销的认识有哪些
  • wordpress如何进入后台上海排名seo公司
  • 中国优秀网站广州网站优化排名
  • pc网站和手机网站想做电商应该怎么入门
  • 做网站要用到的技术线上电商怎么做
  • 网站建设对服务器有舍要求吗爱网站查询
  • 怎样跟网站做优化呢国内高清视频素材网站推荐
  • 东平专业的网站制作优化设计答案大全英语
  • 现代网站建设百度购物平台客服电话
  • 北京公司网站制作方法北京seo关键词
  • 网站百度指数分析宁波网络营销策划公司
  • 常熟网站制作全网营销推广是什么
  • 超可爱做头像的网站百度今日小说排行榜
  • 轻淘客网站怎么做seo怎么快速提高排名
  • 中山 网站建设一条龙seo工作流程图
  • 无锡网站建设方案服务手机百度网页版 入口
  • 北京cms建站系统武汉搜索排名提升
  • 湖州住房和城乡建设部网站seo推广需要多少钱
  • 网站专题怎么做做网站的平台