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

c++——模板初始识

1.函数模板

我们经常用到Swap函数交换两个值。由于需要交换的数据的类型不同,我们就需要写不同参数类型的同名函数,也就是函数重载:

然而这三个函数的逻辑是一样的,写这么多有些多此一举,通过函数模版可以写一个通用的交换函数。

---------------------------------------------------------------------------------------------------------------------------------

1.格式template<typename T1,typename T2,......typename Tn>

typename是关键字,也可以用class代替

T1-Tn是函数的参数类型名(T可以用别的名字代替,只是我们习惯用T)

---------------------------------------------------------------------------------------------------------------------------------

2.用法

---------------------------------------------------------------------------------------------------------------------------------

3.原理

检测你传入的参数类型,隐式的帮你生成这一类型的函数重载。实际上仍然生成了多个函数,调用的时候也不是调用同一个函数,而是调用对应的函数重载,只不过编译器替你写了这些函数。(实际上,由于交换函数使用频繁,已经被纳入库中(swap),不需要我们去写)

---------------------------------------------------------------------------------------------------------------------------------

4.函数模版的显式实例化:

(1)有一种情况:

编译器不确定T是int还是double类型。

为了解决这个问题你可以这样:

但是你也可以这样:

这样直接指定了T类型而不用编译器推演,叫做函数模板的显式实例化(这种情况下,b会转换为int类型)

(2)但是,如果同一个模板参数只做返回值的话:

编译器不能根据推演返回值类型,所以必须模板实例化:

(3)如果有多个模板类型:

也可以同时指定T1,T2(返回值类型可以由T1决定(T1通过参数推演)。T1不是只做返回值,也就不是(3)的那种情况)

---------------------------------------------------------------------------------------------------------------------------------

2.类模板

类模板与函数模板不同的点在于,创建对象时一定要指定模板参数类型.

A<int>就相当于st1的类型

---------------------------------------------------------------------------------------------------------------------------------

类模板中的成员函数函数放在类外进行定义是这样的:
必须加上模板参数列表(template<class T>)
类型也要写成A<T>

相关文章:

c++——模板初始识

1.函数模板 我们经常用到Swap函数交换两个值。由于需要交换的数据的类型不同&#xff0c;我们就需要写不同参数类型的同名函数&#xff0c;也就是函数重载&#xff1a; 然而这三个函数的逻辑是一样的&#xff0c;写这么多有些多此一举&#xff0c;通过函数模版可以写一个通用…...

帆软生成csv文件

帆软官网提供了导出csv文件的插件&#xff0c;需要下载指定版本的插件 请选择具体的详情点击官网介绍&#xff1a;文档介绍 插件地址&#xff1a;插件地址...

12.Redis之补充类型渐进式遍历

1.stream 官方文档的意思, 就是 stream 类型就可以用来模拟实现这种事件传播的机制~~stream 就是一个队列(阻塞队列)redis 作为一个消息队列的重要支撑属于是 List blpop/brpop 升级版本.用于做消息队列 2.geospatial 用来存储坐标 (经纬度)存储一些点之后,就可以让用户给定…...

品牌做电商控价的原因

品牌控价确实是一项至关重要的任务&#xff0c;它关乎着品牌形象、市场定位以及长期发展的稳定性。在电商平台上&#xff0c;价格的公开性和透明度使得消费者、经销商和其他渠道参与方都能够轻易地进行价格比较。因此&#xff0c;品牌方必须对电商渠道的价格进行严格的管控&…...

安全面试中的一个基础问题:你如何在数据库中存储密码?

3分钟讲解。 上周的面试故事 职位&#xff1a;初级安全工程师&#xff0c;刚毕业。 开始面试。 我&#xff1a;“这里你提到对数据安全有很好的理解。你能举例说明哪些方面的数据安全吗&#xff1f;” A&#xff1a;“当然。例如&#xff0c;当我们构建一个系统时&#xff0c;会…...

【python深度学习】——torch.min()

【python深度学习】——torch.min 1. torch.min()1.1 计算整个张量的最小值1.2 沿特定维度计算最小值1.3 比较两个张量 1. torch.min() torch.min()接受的参数如下: input: 输入的张量。dim: 沿指定维度寻找最小值。如果指定了该参数&#xff0c;返回一个元组&#xff0c;其中…...

华为校招机试 - 最久最少使用缓存(20240508)

题目描述 无线通信移动性需要在基站上配置邻区(本端基站的小区 LocalCell 与周边邻基站的小区 NeighborCelI 映射)关系, 为了能够加速无线算法的计算效率,设计一个邻区关系缓存表,用于快速的通过本小区 LocalCell 查询到邻小区 NeighborCell。 但是缓存表有一定的规格限…...

第三部分:领域驱动设计之分析模式和设计模式应用于模型

分析模式 分析模式是一种概念集合&#xff0c;用来表示业务建模中的常见结构。它可能只与一个领域有关&#xff0c;也可能跨越多个领域。“分析模式”这个名字本身就强调了其概念本质。分析模式并不是技术解决方案&#xff0c;他们只是些参考&#xff0c;用来指导人们设计特定领…...

PID传感器在光电显示行业VOC气体检测的应用

随着光电显示技术的飞速发展&#xff0c;液晶显示器等显示器件产品已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;在生产过程中&#xff0c;液晶显示器会释放大量的挥发性有机物&#xff08;VOC&#xff09;气体&#xff0c;对生产环境及工作人员的健康构成威…...

iOS推送证书过期处理

苹果推送证书的有效期都是一年&#xff0c;将要过期的时候&#xff0c;苹果官方会发邮件提醒。 一、过期 在电脑上找到并打开其它->钥匙串访问&#xff1b; 我的证书可以看到各个App的推送证书&#xff0c;如果过期了&#xff0c;显示红色X 二、重新创建 1、登陆apple开…...

蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现

0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…...

【leetcode2765--最长交替子数组】

要求&#xff1a;给定一个数组&#xff0c;找出符合【x, x1,x,x-1】这样循环的最大交替数组长度。 思路&#xff1a;用两层while循环&#xff0c;第一个while用来找到符合这个循环的开头位置&#xff0c;第二个用来找到该循环的结束位置&#xff0c;并比较一下max进行记录。 …...

java文档管理系统的设计与实现源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文档管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 文档管理系统的…...

西安航空学院电子工程学院领导莅临泰迪智能科技参观交流

5月26日&#xff0c;西安航空学院电子工程学院院长杨亚萍、专业教师刘坤莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技董事长张良均、副总经理施兴、产品中心负责周东平、校企合作经理吴桂锋与泰迪智能科技韩伟进行热情了接待。双方就专业建设、协同…...

C++|设计模式(二)|简单工厂和工厂方法模式

本文探讨两种广泛使用的创建型模式——简单工厂模式和工厂方法模式&#xff0c;解释他们的实现细节、优势以及应用场景。 在下一篇文章中&#xff0c;我会补充抽象工厂模式&#xff0c;其实工厂模式主要就是为了封装对象的创建过程&#xff0c;如果我们不进行封装&#xff0c;…...

C语言从头学12——流程控制(一)

C语言程序的执行顺序是从前到后依次序执行的。如果想要控制程序执行的流程&#xff0c;就必须使用 流程控制的语法结构&#xff0c;分为条件执行和循环执行。 1、if语句 if 语句在前面的举例中曾经出现过&#xff0c;这里做详细介绍。该语句用于条件判断&#xff0c;满…...

10大领域应该怎么记?

文章目录 5大过程组10大领域49个过程输出输入工具与技术 参考文档&#xff1a; https://mp.weixin.qq.com/s/BJ-Dpn0zxTP0TCbeoJXb9A 5大过程组 启动、规划、执行、监控、收尾 10大领域 巧记&#xff1a;【挣饭进城市&#xff0c;咨购风菜干】【狗子整范进—成人风采】 整…...

通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示

文章参考&#xff1a;https://gitee.com/socbis/linux-lvgl lvgl on linux Frame buffer 主机环境: Ubuntu 18.04lvgl 8.0.1 获取源码并运行demo 获取源码 需要3样东西来构建demo : lvgl核心控件库: 从此处获取源码 lvgl&#xff0c;选择版本 Release v8.0.1. 显示和触摸接…...

M功能-支付平台(三)

target&#xff1a;离开柬埔寨倒计时-221day 前言 今天周六&#xff0c;但是在柬埔寨还是工作日&#xff0c;想着国内的朋友开始休周末就羡慕呀&#xff0c;记不清在这边过了多少个周六了&#xff0c;多到我已经习惯了。而且今天技术部还停电了&#xff0c;真的是热的受不了呀…...

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施&#xff0c;利用5G为代表的新一代信息通信技术集成&#xff0c;打造新型工业互联网基础设施。在5G工厂中&#xff0c;自动化和智能化设备广泛使用&#xff0c;高度互联的工厂网络得以实现&#xff0c;远程监控和管理成为可能&#xff0c;…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…...

Redis——Cluster配置

目录 分片 一、分片的本质与核心价值 二、分片实现方案对比 三、分片算法详解 1. ‌范围分片&#xff08;顺序分片&#xff09;‌ 2. ‌哈希分片‌ 3. ‌虚拟槽分片&#xff08;Redis Cluster 方案&#xff09;‌ 四、Redis Cluster 分片实践要点 五、经典问题解析 C…...

【靶场】XXE-Lab xxe漏洞

前言 学习xxe漏洞,搭了个XXE-Lab的靶场 一、搭建靶场 现在需要登录,不知道用户名密码,先随便试试抓包 二、判断是否存在xxe漏洞 1.首先登录抓包 看到xml数据解析,由此判断和xxe漏洞有关,但还不确定xxe漏洞是否存在。 2.尝试xxe 漏洞 判断是否存在xxe漏洞 A.send to …...

板凳-------Mysql cookbook学习 (十--2)

5.12 模式匹配中的大小写问题 mysql> use cookbook Database changed mysql> select a like A, a regexp A; ------------------------------ | a like A | a regexp A | ------------------------------ | 1 | 1 | --------------------------…...

Windows开机自动启动中间件

WinSW&#xff08;Windows Service Wrapper 是一个开源的 Windows 服务包装器&#xff0c;它可以帮助你将应用程序打包成系统服务&#xff0c;并实现开机自启动的功能。 一、下载 WinSW 下载 WinSW-x64.exe v2.12.0 (⬇️ 更多版本下载) 和 sample-minimal.xml 二、配置 WinS…...

网络安全问题及对策研究

摘 要 网络安全问题一直是近年来社会乃至全世界十分关注的重要性问题&#xff0c;网络关乎着我们的生活&#xff0c;政治&#xff0c;经济等多个方面&#xff0c;致力解决网络安全问题以及给出行之有效的安全策略是网络安全领域的一大目标。 本论文简述了课题的开发背景&…...

多层PCB技术解析:从材料选型到制造工艺的深度实践

在电子设备集成度与信号传输要求不断提升的背景下&#xff0c;多层PCB凭借分层布局优势&#xff0c;成为高速通信、汽车电子、工业控制等领域的核心载体。其通过导电层、绝缘层的交替堆叠&#xff0c;实现复杂电路的立体化设计&#xff0c;显著提升空间利用率与信号完整性。 一…...

Vue3项目实现WPS文件预览和内容回填功能

技术方案背景&#xff1a;根据项目需要&#xff0c;要实现在线查看、在线编辑文档&#xff0c;并且进行内容的快速回填&#xff0c;根据这一项目背景&#xff0c;最终采用WPS的API来实现&#xff0c;接下来我们一起来实现项目功能。 1.首先需要先准备好测试使用的文档&#xf…...