模板进阶

非类型模板参数(常量参数)

相当于向类传递常量(编译前确定)参数

只能传整型/size_t,不可double等

C++20 后可以支持其他内置类型(可指针)

自定义类型的实参永远不行

array

可理解为固定size的vector

array和普通数组区别

普通数组越界检查不严格,是抽查

越界调试时不报错

array无论读写或越界都能及时报错

没啥大用 不如vector

array在栈区开空间 占栈空间 不如在堆开

typename

typename告诉编译器 后为一个自定义类型 不是静态数据成员/变量

也可用auto 就不用typename了

对于模板,编译器只在实例化时检查实例化部分,未实例化时不检查模板,所以此时无法确认其为自定义类型/变量

typedef 给类型起别名 不给变量别名

给变量其别名用引用

模板的特化

特殊化处理

如对Date比较大小

参数类型为const的特化

建议:别用函数特化

类模板特化好用

类模板特化方式

偏特化

特化指针(不改变参数类型)

传入int*   T为int

应用:

type(T1).name == int,而非指针

可保证类中既能T1*表示其指针类型,也能T表示其原类型

也可特化引用

模板分离编译

类和函数一般声明定义文件分离,声明在h中,定义在cpp中

只包了声明的h文件,为什么能用其定义的cpp

调用函数汇编层面转成 call 函数地址:在链接时拿函数名找函数地址

普通函数(的指令)会被编译生成地址(第一条指令地址),地址放到符号表,但模板不会被编译生成地址放到符号表

链接前文件间不交互:保证了文件编译效率

显示实例化

大坑

要实例化所有用到的实例

最佳解决方案:不要分离到两个文件

解决原理:调用的地方就有定义,直接实例化了

模板总结

tips:

 C++中 一切均可{}初始化,且可省略=

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

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

相关文章

在点云地图中进行点云计数

文章目录 概要头文件主要代码概要 在激光SLAM(Simultaneous Localization and Mapping)中,局部点云地图是通过激光雷达扫描捕捉到的周围环境的局部三维点集合。统计局部点云地图中的所有点数目是一个常见的需求,这可以帮助我们了解数据的密集程度、有效性等。 为了统计局…

JavaEE:http请求 | 过滤器 | 同步与异步请求 | 跨域问题 | axios框架 有这一篇就够!

📃HTTP请求 ▐ http超文本传输协议: ⦁ http超文本传输协议属于应用层协议,传输内容必须是超文本内容 (网页内容) ⦁ 例如在网页上点击超链接,提交表单,都可以向后端发送一个http请求 ⦁ 一次http请求中包含请求行、…

力扣167. 两数之和 II - 输入有序数组

Problem: 167. 两数之和 II - 输入有序数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义左、右指针left、right分别指向数组索引为0和索引为nums.length - 1,定义结果数组int[] res new int[2]用于存储索引; 2.查找:当判断numbers[left] nu…

机器视觉——硬件常用基础知识

光源 机器视觉中光源的作用 1)强化特征,弱化背景 2)光源打得好,图好了,后期算法更简化 3)图好了,测试速度更高 各种光源的综合性能对比及为啥使用LED灯 光的颜色的选择 白色光:通常用…

Qwen-VL论文阅读

论文地址 其他同学的详细讲解 模型结构和参数大小 (1)LLM:Qwen-7B (2)Vision Encoder:ViT架构,初始化参数是 Openclip’s ViT-bigG。 在训练和推理过程中,输入的图像都被调整到…

C语言函数递归实现汉诺塔问题

汉诺塔问题的大概 汉诺塔问题如图三个柱子,利用B将A上面的盘子移到C上面,但是一次只能移动一个盘子并且大的盘子不可以在小的盘子上面。 当只有三个盘子的时候,就像图片一样移动,当盘子多了起来我们就很难分得清逻辑了。 这个时候…

MySQL之查询性能优化(四)

查询性能优化 MySQL客户端/服务器通信协议 一般来说,不需要去理解MySQL通信协议的内部实现细节,只需要大致理解通信协议是如何工作的。MySQL客户端和服务器之间的通信协议是"半双工"的,这意味着,在任何一个时刻&#…

神经网络与深度学习——第15章 序列生成模型

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第15章 序列生成模型,习题还没做先存在这里。 序列生成模型 序列概率模型 序列生成 N元统计模型 深度序列模型 模型结构 嵌入层 特征层 输出层 参数学习 评价方法 困惑度 BLEU算法 ROUGE算法 序…

Aethir: 破局算力瓶颈,构建AI时代去中心化云基础设施

科技的每一次飞跃都在重新塑造世界,而近年来,跨越式的技术革新再次引发了深刻的变革,那就是人工智能(AI)。 人工智能已然超越了此前的所有技术概念,成为了继互联网之后的下一个巨大浪潮。从自动驾驶汽车到…

每天复习一点小CTF知识(6.4)

NSSCTF/[FSCTF 2023]夜深人静的时候也会偷偷emo 直接爆破压缩包,先来数字 解压好,一个flag.mp3 mp3隐写,直接干 得一个txt文件直接开

宇泰485中继器光电隔离防雷 工业级RS485信号放大器 UT-2209正品

品牌:other/其他 型号:UT-2209 上市时间:2018-01-01 颜色分类:蓝色 信号延长器,工业级,高性能,RS-485光电隔离中继器,兼容RS-485标准,延长通信距离,即插即用. 性能特点: 内置光电隔离器及DC/DC隔离模块. 采用TVS瞬态电…

读书-《蛤蟆先生去看心理医生》

书名蛤蟆先生去看心理医生作者罗伯特戴博德状态阅读中简介该书借用《柳林风声》的故事主角蛤蟆先生,讲述了他接受心理咨询的故事。作者通过陷入抑郁的蛤蟆先生和心理咨询师苍鹭的互动,探索蛤蟆先生爱炫耀、自卑性格和抑郁情绪的来源,指出童年…

【Python】 如何在Python中使用小数步长值的`range()`函数?

在Python编程中,range()函数是一个非常常用的工具,它用于生成一个整数序列。然而,标准的range()函数只能接受整数作为步长值,这在某些情况下可能会限制其应用。幸运的是,Python提供了一些方法来实现使用小数步长的rang…

优思学院|六西格玛绿带与黑带知识体系的比较,哪个更适合你?

六西格玛作为一种广泛应用的质量管理方法,通过减少缺陷和变异来提高输出质量。为了实现这些目标,六西格玛采用数据驱动的DMAIC(定义、测量、分析、改进、控制)方法。在六西格玛的实施过程中,绿带和黑带是两个关键角色。…

【代码随想录】【算法训练营】【第28天】 [93]复原IP地址 [78]子集 [90]子集II

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 28,工作的周二~ 题目详情 [93] 复原 IP 地址 题目描述 93 复原 IP 地址 解题思路 前提:分割问题 思路:回溯算法,确定每次递归回溯的分割位置…

小短片创作-理论知识(五)

1、网格体绘制 1.UE5打开Megascan插件的材质混合器,创建混合材质,最多选择3个材质进行混合, 2.通过模式->网格体绘制,进入网格体绘制模式,通过select选择一个平面进行绘制,然后通过paint进行绘制&am…

【Mac】Keyboard Maestro for Mac(键盘大师)软件介绍及安装教程

软件介绍 Keyboard Maestro for mac(键盘大师)是目前Mac OS平台上功能最为齐全的Mac键盘增强工具,它能将你的Keyboard作用发挥到极致,可以根据命令或计划自动执行简单或复杂的应用程序或网站,文本或图像。使用Keyboar…

【TPAMI-2024】EfficientTrain++帮你降低网络训练的成本

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言论文更容易学习的模式:频域易于学习的模式:空间域统一的训练课程 EFFICIENTTRAIN计…

RIP v2路由安全认证综合实验

RIP v2路由安全认证综合实验 实验拓扑: 实验要求:通过认证防范攻击者获得通信设备的相关信息。 实验步骤: 1.完成基本配置 sys Enter system view, return user view with CtrlZ. [Huawei]sys AR1 [AR1]undo in e Info: Information center…

【电子书赠送福利】蘇小沐电子数据取证实务教程!风吹哪页读哪页,哪页不会撕哪页!

【电子书赠送福利】蘇小沐电子数据取证实务教程!风吹哪页读哪页,哪页不会撕哪页! 合并文章的时候才发现自己写了那么多,受限于时间,第一次合集版本只收录了已发博客的三分之二左右,暂时先这样!…