news 2026/5/14 18:52:11

C++11(可变参数模板,emplace系列接口)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++11(可变参数模板,emplace系列接口)

文章目录

  • 可变参数模板
    • 参数包展开
    • emplace接口

可变参数模板

c++11支持可变参数模板,可以自定义模板参数的数量,可变数目的参数被称为参数包
参数包分为模板参数包和函数参数包
一个包可以包含0或多个参数,可以通过sizeof…(args)来获取参数个数,0个也是合法的,不报错

//class...Args表示模板参数包,接收任意数量任意种类的参数类型,比如int,string等//int ...Nums表示非类型模板参数包,接收常量,比如一堆整数template<class...Args,int...Nums>voidfunc(Args...args)//Args...表示函数参数包,用于存放所有收到的实参,比如1,"张三"等{cout<<sizeof...(args)<<endl;}template<class...Args>voidfunc1(Args&&...args){}//万能引用版本,配合forward()实现完美转发intmain(){func(1);//1个参数func(1,2,3,"abaaba")//多个不同类型参数

参数包展开

通过一个函数来递归展开参数包,还需要定义一个递归终止函数

voidshow_args(){//递归出口}template<classT,class...Args>voidshow_args(T val,Args...args){cout<<val<<" ";//会自动将参数包里的第一个参数传给val,并对val进行操作show_args(args...);//剩余参数打包为新的参数包继续递归拆解,最后剩0个元素时会调用无函数的重载}//拆包过程会在编译时确定递归几次show(1,2,3,"abc",3.14);

emplace接口

C++11之后STL容器都新增了emplace系列接口,均为模板可变参数
功能上兼容push系列和insert系列,还支持直接输入构造被容纳类型的参数,在容器空间中直接构造对象
emplace总体而言是更高效的,推荐可以代替insert和push系列

vector<string>v;v.push_back("hello");//push:先造临时string,再移动/拷贝进容器v.emplace_back("hello");//emplace:传构造参数,在尾部直接构造,无临时对象v.insert(v.end(),string("hello"));//insert:插入完整对象v.emplace(v.end(),"hello");//emplace:传构造参数,在迭代器处就地构造v.emplace_back({"hello"})//会先使用花括号初始化构造string,再将string插入v,效率并没有提升
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 18:49:44

欧姆龙NX/NJ PLC数据采集,选FINS、Socket还是OPC UA?一张表帮你做对选择

欧姆龙NX/NJ PLC数据采集协议深度对比&#xff1a;从FINS到OPC UA的技术决策指南 在工业自动化项目中&#xff0c;数据采集作为连接物理设备与数字系统的桥梁&#xff0c;其协议选择直接影响着整个IIoT架构的稳定性与扩展性。欧姆龙NX/NJ系列PLC作为工业控制领域的核心设备&…

作者头像 李华
网站建设 2026/5/14 18:49:23

以凰为魂,以标为尺:《凰标》丈量华夏文艺万丈高度@凤凰标志

世间文艺之兴衰&#xff0c; 不在产量之多寡&#xff0c;不在流量之喧嚣&#xff0c; 而在标尺之正邪、维度之高低、气韵之深浅。一、弃己尺而用彼尺&#xff0c;百年之殇 百年以降&#xff0c;华夏文艺之所以屡遭矮化、屡陷迷茫、屡失风骨&#xff0c;根源在于—— 弃己尺而用…

作者头像 李华
网站建设 2026/5/14 18:46:52

长期项目中使用Taotoken观察到的API服务稳定性与支持体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期项目中使用Taotoken观察到的API服务稳定性与支持体验 在为期数月的实际开发项目中&#xff0c;我们选择将核心的智能对话功能通…

作者头像 李华
网站建设 2026/5/14 18:38:06

skynet笔记

文章目录API查阅一个独立的 Skynet 服务&#xff08;Actor&#xff09;消息头部的类型&#xff08;ptype&#xff09;字段。register_protocol的作用预定义常量自定义数字&#xff08;类型&#xff09;协程常见函数解析常见的字符串处理&#xff08; Lua 标准字符串库的函数&am…

作者头像 李华