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

Cpp学习——模板

模板?

目录

模板?

1.介绍

2.函数模板的使用

3.函数模板的强制转换or显式调用

四,模板的分类


1.介绍

在Cpp3.0中,祖师爷便引入了模板的概念。这是一个重大的变革,为后来的Cpp标准化打下了铺垫。也正是因为有了模板,Cpp才能有STL库。这么好的东西,那我们今天就浅浅的了解一下吧:和现实生活中的模板一样,Cpp模板的作用就是当一个模子来将一些重复的事件来作标准化的快速处理。比如说一些在逻辑上重复的代码,可以通过函数重载来运行,但还是太麻烦,如swap函数,通过函数重载的方式来实现的话就是这样的:

void swap(int* p1, int* p2)//实现整型的交换
{int temp = *p1;*p1 = *p2;*p2 = temp;
}void swap(char* p1, char* p2)//实现字符型的交换
{char temp = *p1;*p1 = *p2;*p2 = temp;
}void swap(double* p1, double* p2)//实现双精度浮点型的交换
{double temp = *p1;*p1 = *p2;*p2 = temp;
}

那通过函数模板是怎么实现的呢?

2.函数模板的使用

 要使用模板,首先得清楚的知道一个叫做template的关键字。这个关键字是用来定义函数模板变量的。

1.定义方式:template <class T>或者template<typename T>。在定义好这个虚拟类型变量以后再用这个T来代替函数中的类型便可以使用模板了。如:

template<class T>
void Swap(T& p1, T& p2)
{T temp = p1;p1 = p2;p2 = temp;
}

在搞好了这个模板以后,但凡是要搞交换逻辑的代码并且要交换的两者类型相同的代码都可以用这份模板来支持。

2.定义多个模板虚拟类型。定义多个虚拟的方式如下:template<class T1,class T2>。这样便定义了多个虚拟类型。当我们实现一个加法函数时可能是小数加小数,也可能是整数加整数,还可能是小数加整数。所以为了实现这样的加法便可以使用模板定义出两个虚拟类型再实现这个函数,如:

template <class T1,class T2>
T2 Add(T1 p1, T2 p2)
{return p1 + p2;
}

3.函数模板的强制转换or显式调用

其实在有些情况下我们是需要显式调用函数模板的,如下面的情况:

template<class T>
T* func(int n)
{return new T[n];
}

这种情况下不显示调用函数模板便会出问题。所以,为了调用这个函数便要进行强转的操作,语法如下:函数名<类型>( 参数/无参),如这个函数我要进行变成整型的调用操作如下:

int* ptr = func<int>(10);

四,模板的分类

模板分为函数模板与类模板。上面介绍的都是函数模板。类模板其实也差不多,就是写一个类然后将类的类型用虚拟模板类型代替便可以生成一个类模板了。

初尝模板就到这里了。

 

相关文章:

Cpp学习——模板

模板&#xff1f; 目录 模板&#xff1f; 1.介绍 2.函数模板的使用 3.函数模板的强制转换or显式调用 四,模板的分类 1.介绍 在Cpp3.0中&#xff0c;祖师爷便引入了模板的概念。这是一个重大的变革&#xff0c;为后来的Cpp标准化打下了铺垫。也正是因为有了模板&#xff0…...

HTTP 协议 版本详解

HTTP 协议 介绍<一> 简介 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于在客户端和服务器之间进行通信的协议。它是现代互联网中最常用的应用层协议之一。HTTP 的主要目的是实现超文本资源的传输&#xff0c;例如 HTML 文档、图像和音频文件等。…...

PHP语言基础知识(超详细)

文章目录 前言第一章 PHP语言学习介绍 1.1 PHP部署安装环境1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍2.2 PHP常量变量介绍 2.2.1 PHP变量知识&#xff1a;2.2.2 PHP常量知识&#xff1a; 2.3 PHP注释信息介绍2.4 PHP数据类型介绍 2.4.1 整形数据类型2.4…...

Flex弹性盒子的项目属性

最近在写项目时用到了弹性盒子的项目属性&#xff0c;记录一下&#xff0c;以后用到继续扩充 <div class"concern-data"><div><img src"https://meituan.thexxdd.cn/lvyou/assets/pinglun-fc62482a.svg" alt""><span>1&…...

广州银行信用卡中心:强化数字引擎安全,实现业务稳步增长

广州银行信用卡中心是全国城商行中仅有的两家信用卡专营机构之一&#xff0c;拥有从金融产品研发至销售及后期风险控制、客户服务完整业务链条&#xff0c;曾获“2016年度最佳创新信用卡银行”。 数字引擎驱动业务增长 安全左移降低开发风险 近年来&#xff0c;广州银行信用卡…...

【Rust日报】2023-08-03 - Polars 获约 400 万美元种子轮融资

文章&#xff1a;2023 年对 Rust 编译器 CI 的改进 kobzol 的新文章&#xff0c;介绍了关于优化 Rust 编译器构建、测试和性能监视基础设施的方案和实施情况。 根据作者的工作&#xff0c;文章内容分为三类&#xff1a; Rust 编译器&#xff08;rustc&#xff09;构建配置、 Ru…...

装修小程序,开启装修公司智能化服务的新时代

随着数字化时代的来临&#xff0c;装修小程序成为提升服务质量和效率的关键工具。装修小程序旨在为装修公司提供数字化赋能、提高客户满意度的智慧装修平台。通过装修小程序&#xff0c;装修公司能够与客户进行在线沟通、展示设计方案、提高服务满意度等操作。 装修小程序的好处…...

使用PHP和Redis实现简单秒杀功能

安装Redis 首先&#xff0c;需要在服务器上安装Redis。如果使用Linux系统&#xff0c;可以使用命令行安装。如果使用Windows系统&#xff0c;可以下载并安装Redis二进制文件。 创建Redis连接 在PHP中&#xff0c;可以使用Redis扩展来连接Redis服务器。需要在PHP文件中包含Re…...

C#开发FFMPEG例子(API方式) FFmpeg拉取udp组播流并播放

代码及工程见https://download.csdn.net/download/daqinzl/88168680 开发工具&#xff1a;visual studio 2019 网上用C/C调用FFmpeg的API例子很多&#xff0c; c#使用ffmpeg.autogen的方式很简单&#xff0c;直接复制C/C调用FFmpeg的API的代码到C#中&#xff0c;然后在FFmpeg…...

Android性能优化—图片优化

图片优化是内存优化中很重要的一部分&#xff0c;加载Bitmap时往往需要消耗大量的内存&#xff0c;稍不注意就容易导致内存溢出&#xff08;OOM&#xff09;。 一、图片OOM问题产生 1、 一个页面一次加载过多图片&#xff1b; 2、加载大图片没有进行压缩(尺寸&#xff0c;质…...

如何搭建自动化测试框架?资深测试整理的PO模式,一套打通自动化...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Po模型介绍 1、简…...

软件外包开发的GO语言特点

Go语言&#xff08;也称为Golang&#xff09;是由Google开发的一种编程语言。它具有许多特点&#xff0c;使其成为许多项目范围的优秀选择。Go语言适用于需要高性能、并发和简洁易读的项目&#xff0c;特别是面向网络和分布式应用的项目。今天和大家分享项目的特点及适用的项目…...

【深度学习Week4】MobileNet_ShuffleNet

报错&#xff1a;unsafe legacy renegotiation disabled 解决方案&#xff1a; 尝试了更换cryptography36.0.2版本&#xff0c;以及更换下载链接的方法&#xff0c;都不行&#xff0c;最后采用了手动下载mat文件并上传到colab的方法 高光谱图像分类数据集简介Indian Pines&…...

649. Dota2 参议院

题目描述&#xff1a; 主要思路&#xff1a; 这是一个按照题意模拟的问题&#xff0c;利用队列模拟议员的投票顺序即可。 class Solution { public:string predictPartyVictory(string senate) {queue<int> r,d;int nsenate.length();for(int i0;i<n;i){if(senate[i…...

无人机管控平台,推动电力巡检管理水平提升

各地区无人机作业水平和管理水平存在参差不齐&#xff0c;电力巡检管理要求与业务发展水平不匹配的问题。同时&#xff0c;巡检数据的存储和管理分散&#xff0c;缺乏有效的整合与共享手段&#xff0c;使得内外业脱节&#xff0c;没有形成统一应用和闭环管理。这就导致巡检数据…...

阿里云平台WoSignSSL证书应用案例

沃通CA与阿里云达成合作并在阿里云平台上线WoSign品牌SSL证书。自上线以来&#xff0c;WoSignSSL证书成为阿里云“数字证书管理服务”热销证书产品&#xff0c;获得阿里云平台客户认可&#xff0c;助力阿里云平台政府、金融、教育、供应链、游戏等各类行业客户实现网站系统数据…...

服务器时钟同步

服务器时钟同步 文章目录 服务器时钟同步背景windows时钟同步Linux机器上的时钟同步Centos时钟同步Ubuntu系统时钟同步 查看是否同步的命令 背景 运维&#xff0c;XXX服务器慢了2秒&#xff0c;导致XXX业务没有正常执行&#xff0c;请立即排查为啥会有时钟不同步的问题。 首先…...

AMEYA360:瑞萨电子MCU和MPU产品线将支持Microsoft Visual Studio Code

全球半导体解决方案供应商瑞萨电子宣布其客户现可以使用Microsoft Visual Studio Code&#xff08;VS Code&#xff09;开发瑞萨全系列微控制器&#xff08;MCU&#xff09;和微处理器&#xff08;MPU&#xff09;。瑞萨已为其所有嵌入式处理器开发了工具扩展&#xff0c;并将其…...

JSP--Java的服务器页面

jsp是什么&#xff1f; jsp的全称是Java server pages,翻译过来就是java的服务器页面。 jsp有什么作用&#xff1f; jsp的主要作用是代替Servlet程序回传html页面的数据&#xff0c;因为Servlet程序回传html页面数据是一件非常繁琐的事情&#xff0c;开发成本和维护成本都非常高…...

07 Ubuntu中使用poetry工具管理python环境——巨详细!!!

由于conda和ros2的环境实在太容易冲突了。我真的不敢再使用conda&#xff0c;着实是有些搞不明白这解释器之间的关系。 conda的卸载和ros2的安装暂不赘述&#xff0c;下面着重来说如何在Ubuntu中使用poetry进行包管理及遇到的问题。 1 安装poetry 由于在有写入权限的限制&am…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...