浅谈非类型模板参数、模板的特化

news2025/1/16 3:42:36

image-20230114122554287

非类型模板参数

1.模板参数分类类型形参与非类型形参。
2.类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。类型参数也可以给缺省值
3.非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。

image-20230114101637498

4非类型模板参数一般是常量、整形,比如int,char类型,而浮点数类对象以及字符串是不允许作为非类型模板参数的,若写了会报错。

5.非类型的模板参数必须在编译期就能确认结果

库里面也有一个Array,它与c语言的数组有啥区别呢?

底层上没有区别,但是数组对越界检查是抽查,而Array对越界检查严格。

image-20230114102329316

模板的特化

函数模板

这里如果按照Less函数,那么第二个比较就有问题,第二个是按照p1的地址和p2的地址进行的比较。

image-20230114104821833

第一种方式:函数重载

如图函数B对函数A构成重载

image-20230114105458676

第二种方式: 函数特化

函数模板的特化步骤:

  1. 必须要先有一个基础的函数模板
  2. 关键字template后面接一对空的尖括号<>
  3. 函数名后跟一对尖括号,尖括号中指定需要特化的类型
  4. 函数形参表: 必须要和模板函数的基础参数类型完全相同,如果不同编译器会报奇怪的错误。

函数D是函数C的特化(函数的特殊化处理)

image-20230114105753770

类模板特化

全特化,偏特化

全特化即是将模板参数列表中所有的参数都确定化。

偏特化:任何针对模版参数进一步进行条件限制设计的特化版本。又称半特化

偏特化有两种方式:

1.部分特化:将模板参数类表中的一部分参数特化。

2.参数更进一步的限制:偏特化并不仅仅是指特化部分参数,而是针对模板参数更进一步的条件限制所设计出来的一个特化版本。

编译器根据参数选择更适合的类

化并不仅仅是指特化部分参数,而是针对模板参数更进一步的条件限制所设计出来的一个特化版本。**

编译器根据参数选择更适合的类

image-20230114122200234

模板的优缺点

【优点】
1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生
2. 增强了代码的灵活性

【缺点】
1. 模板会导致代码膨胀问题,也会导致编译时间变长
2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误

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

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

相关文章

FARO RevEng Software 22.3.9 Crack

FARO RevEng Software 22.3.9 用于反向工程的三维点云捕捉和网格生成 先进的 FARO RevEng 软件平台能为用户带来全面的数字设计体验。该反向工程软件有助于利用三维点云创建和编辑高质量的网格和 CAD 表面&#xff0c;以实现反向工程工作流程。然后&#xff0c;工业设计师可以利…

Zookeeper 集群安装

Zookeeper 集群 主机 IP SoftWare Port OS Myidnode1 192.168.230.128 apache-zookeeper-3.7.1 2181 Centos 7 1 node2 192.168.230.129 apache-zookeeper-3.7.1 2181 Centos 7 2 node3 192.168.230.130 apache-zookeeper-3.7.1 2181 Centos 7 31. 下载 Apache Downloads 下…

2022简单一年

牙齿软件决定开发的时间是2021年底&#xff0c; 老板说2022年任务是要开发牙齿咬合力的软件&#xff0c; 功能主要借鉴美国的一款软件,老板给了我一份软件的说明书&#xff0c; 包含了软件的所有功能。 看到软件第一感觉是&#xff0c; 做的确实是牛逼&#xff0c; 并且各…

【十 二】Netty 文件传输

概念介绍 文件是最常见的数据源之一&#xff0c;程序经常需要在文件中读取数据&#xff0c;也要将数据保存在文件中&#xff0c;进行持久化。 文件是计算机中一种基本的数据存储形式。即使计算机关机&#xff0c;文件的数据还是存在的&#xff0c;但是内存的数据就会丢失。 相…

联合证券|五定增项目同日被否 保荐机构该不该“背锅”?

一天之内5家上市公司定增一起被拒&#xff0c;这一音讯瞬间引发商场重视。 1月11日&#xff0c;浙江世宝、铭普光磁、胜华新材、日辰股份、振华科技等5家上市公司一起公告称&#xff0c;定增不被证监会受理&#xff0c;理由均是证监会以为请求资料不符合法定方式。 投行业界人…

18.Isaac教程--坐标系

坐标系 本节介绍相机、网格/矩阵/图像和机器人坐标系。 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录坐标系网格像素中心网格/矩阵/图像坐标系相机坐标系机器人坐标系网格像素中心 存储网格 GGG 上的值&#xff0c;使得网格单元将值…

Crack:CAD Exchanger GUI/CAD Exchanger Lab 不是SDK

CAD Exchanger GUI/CAD Exchanger Lab 用于查看、转换和分析 CAD、BIM 和 3D 数据 在 Windows、Mac 和 Linux 上加载和转换模型&#xff0c;而无需处理昂贵的 CAD 系统。 使用 CATIA、SOLIDWORKS、Creo、STEP、JT、IFC 和更多格式。 非常适合您的 3D 数据工作流程 连接不同的软…

多频电磁仪在2018年杭州电磁大会的报告(ICEEG)

本篇是对多频电磁方法,应用的解读。 本汇报讲述了EMI传感器的基本情况,以及用手持多频电磁仪进行实际探测应用的例子。 什么是电磁感应?用发射装置(TX)激发谐波,产生一次场(Primary field),地下导体目标会相应产生涡流电磁场,产生二次场,被接收装置(RX)探测到。 …

超参数、划分数据集、偏差与方差、正则化

目录1.超参数(hyperparameters)参数(Parameters)&#xff1a;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;...超参数&#xff1a;能够控制参数W,b的参数&#xff0c;是在开始学习之前设置的参数。比如&#xff1a;学习率、梯度下降循环的数量#iterations、隐…

力扣sql基础篇(七)

力扣sql基础篇(七) 1 统计各专业学生人数 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 想要没有学生的部门也保存,就得以部门表作为主表 #字母表顺序就是升序 SELECT d.dept_name,IFNULL(s1.number,0) student_number FROM Department d LEFT …

2022. 12 青少年机器人技术等级考试理论综合试卷(二级)

2022.年12月青少年机器人技术等级考试理论综合试卷&#xff08;二级&#xff09; 一、 单选题(共 30 题&#xff0c; 共 60 分) 1.“机器人三原则” 是由谁提出的&#xff1f; &#xff08; &#xff09; A.美国人艾萨克 阿西莫夫 B.日本人森昌弘 C.美国人乔治 德沃尔 D.中国人…

谈谈 MongoDB 中连接池、索引、事务等问题

大家好&#xff0c;三分钟你将学会&#xff1a; MongoDB连接池的使用方式与常用参数查询五步走&#xff0c;能活九十九&#xff1f;MongoDB索引与MySQL索引有何异同&#xff1f;MongoDB事务与ACID什么是聚合框架&#xff1f;在最开始接触MongoDB的时候&#xff0c;是通过 Mong…

H3C V7MSR路由器定时限速的典型应用配置

某公司希望在上班时间对员工进行每IP限速&#xff0c;其他时间不限制。 1.主要配置如下&#xff1a; #创建关闭接口g0/1的限速功能 scheduler job close-car-g0/1 command 1 system-view command 2 interface g0/1 command 3 undo qos car inbound carl 1 #创建开启接口g0…

什么是CISP-ICSSE?到底该不该考?

CISP-ICSSE注册信息安全专业人员-工业控制系统安全工程师&#xff0c;英文为 Certified Information Security Professional-ICS Security Engineer&#xff0c;简称 CISP-ICSSE。 持证人员可以从事信息安全技术领域工业控制系统安全方向的工作&#xff0c;具备制定工 控安全威…

74. 序列模型

1. 序列数据 实际中很多数据是有时序结构的例如&#xff0c;电影的评价随时间变化而变化 拿奖后评分上升&#xff0c;直到奖项被忘记看了很多好电影后&#xff0c;人们的期望变高季节性&#xff1a;贺岁片、暑期档导演、演员的负面报道导致评分变低 2. 序列数据-更多例子 音…

【文件操作】C语言

目录1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名3. 文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭4. 文件的顺序读写5. 文件的随机读写5.1 fseek5.2 ftell5.3 rewind6. 文本文件和二进制文件7. 文件读取结束的判定8. 文件缓冲区1. 为什么使用文件 …

NodeMCU esp8266的网络连入网络的模式方式即程序实例

接入WIFI模式 参考&#xff1a;http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/internet-basics/link-layer/ 模式1 – 无线终端模式&#xff08;Wireless Station&#xff09; 简单说就是把这个开发板做为终端连入WiFi 程序实例 需要注意&#xff1a;端口号…

TikTok的崛起历程:我们所有人都看到了这种潜力

武汉瑞卡迪电子商务有限公司&#xff1a;在短短五年里&#xff0c;TikTok已经爆发成为一种流行文化现象以及一个地缘政治闪爆点。它是全世界最热门的应用&#xff0c;被2/3的美国青少年所使用。它的超级吸引人的短视频格式已经让硅谷争相效仿&#xff0c;并使一夜成名变得比以前…

Linux常用命令——vi命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) vi 功能强大的纯文本编辑器 补充说明 vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim&#xff0c;它是vi的增强版&#xff08;vi Improved&#xff09;&#xff…

SpringBoot启动原理解析

我们开发任何一个 Spring Boot 项目&#xff0c;都会用到如下的启动类 SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args);}}从上面代码可以看出&#xff0c;Annotation 定义&am…