网站建设设计基础温州营销推广公司

web/2025/10/5 10:25:15/文章来源:
网站建设设计基础,温州营销推广公司,微信怎么做淘客网站,自己如何做网站推广不要做一个清醒的堕落者文章目录 可变参数模板的简介什么是可变参数 模板参数包参数包数据的获取(函数递归获取)参数包的获取(逗号表达式获取) 可变参数的应用emplace 可变参数模板的简介 c11添加的新特性能够让你创建可以接受改变的函数模板和类模板#xff0c;C98/03#…不要做一个清醒的堕落者文章目录 可变参数模板的简介什么是可变参数 模板参数包参数包数据的获取(函数递归获取)参数包的获取(逗号表达式获取) 可变参数的应用emplace 可变参数模板的简介 c11添加的新特性能够让你创建可以接受改变的函数模板和类模板C98/03类模版和函数模版中只能含固定数量的模版参数可变模版参数无疑是一个巨大的改进。 什么是可变参数 首先我们先来介绍一下什么是可变参数我们先从函数说起吧我们想想可变是什么意思我们在写一个函数的时候我们的函数形参一般数量都是固定的比如Add函数max函数min函数都是只能传递两个参数那么有哪些函数可以传递的形参数目是不固定的呢那当然是printf scanf这两个函数的参数数量都是变化的并且参数类型也是那么这是如何做到的呢其实就是使用了可变参数模板那么printf和scanf的底层其实使用了一个类似于数组的一个东西而惊天我们讲述的则是更为高级些的类的可变参数。 模板参数包 首先我们先说一下格式 // Args是一个模板参数包args是一个函数形参参数包 // 声明一个参数包Args...args这个参数包中可以包含0到任意个模板参数。 template class ...Args void ShowList(Args... args) {}这里呢就是它的一个格式。 上面的参数args前面有省略号所以它就是一个可变模版参数我们把带省略号的参数称为“参数 包”它里面包含了0到NN0个模版参数。我们无法直接获取参数包args中的每个参数的只能通过展开参数包的方式来获取参数包中的每个参数这是使用可变模版参数的一个主要特点也是最大的难点即如何展开可变模版参数。由于语法不支持使用args[i]这样方式获取可变参数所以我们的用一些奇招来一一获取参数包的值。 参数包数据的获取(函数递归获取) 那么我们可以通过什么方式呢这里其实比较好的办法是通过函数递归进行展开。 代码如下 #includeiostream using namespace std; templateclass T void func(T val) {cout val ; } templateclass T,class ...Args void func(T val, Args... args) {cout val ;func(args...); } int main() {func(1, 2, 3, 4, 5);return 0; }这里的递归展开图呢我给大家画一下 那么这里呢就是这个函数的递归展开图其实这个args大家如果不理解可以将它看成是一个背包这个背包可以是空的然后可以把数据放进去然后利用函数重载将其一个一个取出来。其次呢我们就是只有一个参数的拿个函数我们称之为终止函数因为有了这个函数才使得当这个背包里只剩下一个数据的时候才能有函数可调用表示终止了。当然了也不止这一个方法。 参数包的获取(逗号表达式获取) 这种展开参数包的方式不需要通过递归终止函数是直接在expand函数体中展开的, printarg不是一个递归终止函数只是一个处理参数包中每一个参数的函数。这种就地展开参数包的方式实现的关键是逗号表达式。我们知道逗号表达式会按顺序执行逗号前面的表达式。expand函数中的逗号表达式(printarg(args), 0)也是按照这个执行顺序先执行printarg(args)再得到逗号表达式的结果0。同时还用到了C11的另外一个特性——初始化列表通过初始化列表来初始化一个变长数组, {(printarg(args), 0)…}将会展开成((printarg(arg1),0), (printarg(arg2),0), (printarg(arg3),0), etc… )最终会创建一个元素值都为0的数组int arr[sizeof…(Args)]。由于是逗号表达式在创建数组的过程中会先执行逗号表达式前面的部分printarg(args)打印出参数也就是说在构造int数组的过程中就将参数包展开了这个数组的目的纯粹是为了在数组构造的过程展开参数包 template class T void PrintArg(T t) {cout t ; } //展开函数 template class ...Args void ShowList(Args... args) {int arr[] { (PrintArg(args), 0)... };cout endl; } int main() {ShowList(1);ShowList(1, A);ShowList(1, A, std::string(sort));return 0; }这里给大家说明一下这里其实数组后面的三个点是交给编译器去推的也就是说编译器眼里这里是怎们处理了呢 int arr[]{(PrintArg(args), 0),(PrintArg(args), 0),(PrintArg(args), 0)}//是这个样子的那么让我们自己去写肯定是不行的太麻烦所以交给编译器去推导当然了我认为还可以更加简化一些简化为下面这个代码更好 #includeiostream #includestring using namespace std; template class T int PrintArg(T t) {cout t ;return 0; } //展开函数 template class ...Args void ShowList(Args... args) {int arr[] { PrintArg(args)... };cout endl; } int main() {ShowList(1);ShowList(1, A);ShowList(1, A, std::string(sort));return 0; }首先我们要理解为什么原来的代码要加逗号表达式里面写个0其实是因为数组不能为空所以写的那么我们直接将函数的返回值改为返回0不是也可以解决这个问题吗。 可变参数的应用emplace emplace的函数声明如下 template class... Args void emplace_back (Args... args);首先我们看到的emplace系列的接口支持模板的可变参数并且万能引用。那么相对insert和 emplace系列接口的优势到底在哪里呢 我们看一下图中的这个代码我们发现emplace_back这样子插入没有报错而push_back这样却报错了这是为什么呢其实就是因为emplace_back的底层用了可变参数包。我们可以弄一个简易的类来给大家查看一下。 #includelist #includestring #includeiostream using namespace std; namespace clzyf {class data{private:int year, month, day;public:data(int _year 1, int _month 1, int _day 1):year(_year), month(_month), day(_day){;}templateclass... Argevoid crate(Arge... arge){data(arge);}}; } int main() {clzyf::data a { 2023,10,14 };clzyf::data b{2023,10};clzyf::data c{2023};clzyf::data d{};return 0; }请看这里我们通过传值将参数弄成一个参数包并且设置一下缺省参数这样子传递的话就可以弄出更多的花样,那么我们言归正传在上面的那个例子中其实也是这样的他首先先将传递给emplace的参数弄成一个参数包然后将参数包打包给插入函数因此就可以做到push_back无法做到的事情了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建设网站市场细分修复wordpress

基于浣熊优化的BP神经网络(分类应用) - 附代码 文章目录 基于浣熊优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.浣熊优化BP神经网络3.1 BP神经网络参数设置3.2 浣熊算法应用 4.测试结果:5.M…

商丘专业做网站西安微信公众号制作

前端的问题不是难,而是它面对最终用户。只要用户的喜好和口味发生变化,前端就必须跟上。 这导致前端不得不快速变化,因为用户的口味正在越来越快地改变。 后端不需要面对最终用户,需要解决的都是一些经典的计算机科学问题&#…

个人建站什么网站好廊坊建站服务

系列文章目录 前言 我们介绍了 Crocoddyl(Contact RObot COntrol by Differential DYnamic Library),这是一个专为高效多触点优化控制(multi-contact optimal control)而定制的开源框架。Crocoddyl 可高效计算给定预定…

外贸营销网站怎么建设什么是网站和网页

CHM Viewer Star 是一款适用于 Mac 平台的 CHM 文件阅读器软件,支持本地和远程 CHM 文件的打开和查看。它提供了直观易用的界面设计,支持多种浏览模式,如书籍模式、缩略图模式和文本模式等,并提供了丰富的功能和工具,如…

深圳网站设计开发网站页面设计如何收费

当然可以,以下是一份较为详细的NLP学习路线指南,帮助你逐步掌握自然语言处理的核心技术和应用。 一、基础知识与技能 语言学基础: 语言学基本概念:语音、语法、语义等。语言的层次与分类:语音学、音系学、句法学、语…

2017网站开发工程师成都装修设计公司首选

阿波罗应该是近几年比较火的一个分布式配置中心了,说说我个人的理解,希望对一些人有用吧。 首先从使用者的角度想 我们怎么用配置中心的? 1.得有个页面,能有权限管理,能有创建配置key-value。 在阿波罗中&#xff…

产品展示网站源码php分享wordpress小程序源码

前言Windows搭建PHP开发环境很熟练了,要在自己的Mac搭建PHP开发环境还是第一次,因此分享给大家。Mac自带Apache、php,需要自己安装MySql。1.启动Apache// 启动Apache服务sudo apachectl start// 重启Apache服务sudo apachectl restart// 停止Apache服务s…

win网站建设北京seo诊断

1. 题目 给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和。 请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个。 每个数除以除数后都向上取…

dede更新网站c 网站开发面试题

目录 前言 开始 HTML部分 效果图 ​编辑​编辑​编辑​编辑总结 前言 无需多言,本文将详细介绍一段代码,具体内容如下: 开始 首先新建文件夹,创建一个文本文档,其中HTML的文件名改为[index.html]&a…

专业的做网站的资深网站

文章目录 引言进入正题1、依赖2、升级客户端3、websocket处理方法4、完整代码 引言 实时性较高的地方,我们可能会使用到websocket对信息进行实时推送,涉及到websocket就会有开启连接,接收消息,推送消息,错误处理等机制…

dede无法一键更新网站昆明抖音代运营公司

文章目录 OpenAI发完GTP-4o,国内大模型行业还有哪些机会?详细了解一下OpenAI最新发布的支持实时语音对话的模型GPT-4o国内大模型如何寻找发展机会?想要发展技术必须要创新与追赶或许应用场景拓展也是一种出路产业生态构建 ChatGPT 问世才 17 …

手机触屏版网站如何做双语网站

Java底层是C语言。 Sun公司研发人员根据嵌入式软件的要求,对C进行了改造,去除了留在C的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。而后,经过迭代更新&#xff0c…

站酷网素材东莞网络营销公司

文章目录 前言状态图状态变化说明补充说明 前言 线程的生命周期指的是线程从创建出来到最终消亡的整个过程,以及过程中的状态变化。 状态图 以下图用mermaid语法绘制: #mermaid-svg-32vKT6KmFdlYvCnr {font-family:"trebuchet ms",verdana,…

招聘网站建设需求文档公司做网站的申请

编译下载mongodb-src-r2.2.2用VS2010打开mongodb-src-r2.2.2\src\mongo\db\db_10.sln编译mongod项目调试先创建数据库文件夹"D:\mongodb\db"设置调试参数--dbpathD:\mongodb\dbF5运行调试

php网站开发环境设计网站设计

Python Cookbook 3rd Edition Documentation 文章目录第一章:数据结构和算法1.1 解压序列赋值给多个变量问题解决方案讨论1.2 解压可迭代对象赋值给多个变量问题解决方案讨论第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表…

梦创义网站建设建设银行温州分行网站

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

株洲专业网站排名优化看男科哪家好

当下的中国正处于产业结构调整的重要转型时期。创新成为当下企业寻求稳健和长远发展必不可少的关键。要建立属于自己的企业特色,开发出属于自己的产品和服务并在激励竞争的市场下求得生存和发展,企业的自主研发活动已经越来越重视。纵观那些世界500强企业…

厦门网站推广优化哪家好站长查询域名

1 本期推荐歌曲: 《暮色回响》 2 介绍: 是T1作词、作曲 演唱:吉星出租 发行时间: 2024年5月17日 (现已有多个翻唱版本) 3 歌词: 传说浩瀚银河有颗星是他 走出时间后仍然选择留下 漆昼中温柔的不…

苏州企业网站建设服务好万网个人网站怎么备案

题目链接 8VC Venture Cup 2016 - Elimination Round 题意 把$n$个物品分成若干组,每个组的代价为组内价值的极差,求所有组的代价之和不超过$k$的方案数。 考虑DP,$f[i][j][k]$表示考虑到第$i$个物品的时候,还有$j$组尚未分配完…

怎么建立网站的步骤装修公司哪家好广州市

自助烤鸡翅的需求: 1.烤鸡翅的时间和对应的状态: 0-4min :生的 4-7min:半生不熟 7-12min:熟了 12min以上:烤糊了 2.添加调料: 客户根据自己的需求添加 定义烤鸡翅的类、属性和方法,显示对象的信息 …