C++——模板(初阶) + string

news2024/10/1 7:32:31

作者:几冬雪来

时间:2023年5月19日

内容:C++模板 + string讲解

目录

前言:

1.模板: 

1.函数模板的隐/显示实例化: 

2.类模板:

2.STL: 

1.  什么是STL: 

2.STL六大组件: 

3.string类: 

结尾: 


前言:

在上一篇博客我们结束了动态管理的讲解,并且在最后的时候我们引出了下一个学习的知识板块——模板。那么今天我们就大致的堆模板(初阶)进行讲解吧。

1.模板: 

首先在进一步介绍模板的时候,这里我们要知道一个知识。

在这里我们创建模板的时候我们可以用class去代替typname,但是不能用struct去替代typename。 

1.函数模板的隐/显示实例化: 

在这里我们首先依靠模板来书写一个两个值相加的函数。 

在这里我们的a1和a2都是整形,d1和d2都是浮点型,我们都可以对其进行相加

但是在这里就出现了一个问题。 

如果在这里,参数是一个浮点型和一个整形的话,我们的单个T无法确定类型。

因此代码会报错。 

这里的一种方法就是强制类型转换

上面我们都是实参传递的类型,推演T的类型。

另外一种方法就是我们的显示实例化

在这里就是我们的显示实例化。 

显示实例化,它是用指定的类型实例化

在上面的显示实例化的代码中,我们的d2发生了隐式类型装换

都是我们的显示实例化并不是用于上面的两个数相加求值的代码中

而是更多用于我们下面这种无法判断T类型的代码中。 

2.类模板:

在讲解完了我们的函数模板之后,接下来我们就来开始讲解类模板了。

简单的用我们的用栈来举例。

如果我们在这里想要一个栈存int,一个存double

那么相对于的我们就要创建出这两个类型相对于的类,因为只写一个的话我们的类型是写死的

可是这样子有过于麻烦了,每多出一个类型我们就要多创建一个类型的栈进行存储

并且如果某个类发生问题的话,我们每个都要进行修改

因此在这里我们就用到了类的模板。

 

通过以上这种代码,我们就可以成功的创建出不同类型的函数

并且也不用对其失败进行判断。

又因为类模板无法推演实例化

因此在这里我们就要用到显示实例化。 

同样的我们的类模板的声明和定义可以分开进行书写,但是这里并不推荐,因为像我们平常那样分开书写的话会出现问题

因此到后面我们学习到更深的地方的时候我们再来学习。 

在这里每写一个不同函数,要建立一个类模板。 

2.STL: 

那么在大概的讲解了初阶模板之后,接下来我们就要开始讲STL了。

1.  什么是STL: 

2.STL六大组件: 

3.string类: 

在我们的C语言中我们就存在了string。

同样的在C++中也存在着string,只不过二者的用法稍有不同

在这里我们将C++中的string的用法叫做。

string类

那么接下来我们就简单的介绍一下我们的string类要怎么样书写吧。 

这里就是我们string的简单用法。 

其次,我们的string类也支持多个参数的输入。 

 

同时我们也可以用我们的string类来copy我们字符串的一部分长度。 

 

就类似这个样子我们可以借助string类来copy我们一部分字符串的长度

s3是我们的被copy的函数,6是下标为6的位置,5是copy的数量。 

在这里我们不能不写5,如果不写5的话,这里我们的代码也是会崩溃的

这个地方也可以直接比较字符串的大小。

像这里我们就比较了两个字符串的大小

不过因为优先级的缘故,我们需要对两个比较的值加上括号,不然会报错。 

 

同样的我们的string类也可以这样书写

不过这样写的效率不好,不建议这样使用。 

 

同样的之前我们又说过,string类可以实现增删查改

这里就是我们实现增删查改的代码

不过相比起这样书写增删查改,我们还要更加便利的方法。 

 

这样子书写依旧可以完成我们的增。

它的本质还是尾插,只不过它在string类中重载了operator+=,然后我们去进行调用。

接下来还有一个问题。

 在这里我们要求把一个变量转为string对象的话要怎么书写

在这里我们就可以这样进行实现。 

不过这个代码还有一些要改进的地方,下一篇博客我们再来细说。

结尾: 

在这里我们的模板初阶就这样的科普完毕了,接下来我们就要讲解C++中的核心内容STL了。大家一定要在学好新知识的过程中巩固旧知识,这样才能有所提升。最后希望这篇博客能带来帮助。

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

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

相关文章

【Java入门】Java的语言概述

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Java入门篇系列,该专栏主要讲解:什么是java、java的数据类型与变…

JavaSE入门篇——类和对象(实例理解)

文章目录 一、面向对象简述二、类与对象的基本概念三、类的定义与使用四、this引用五、对象的构造及初始化六、static成员七、 代码块 一、面向对象简述 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象…

DRMS全国服务中心第一期讲师特训会圆满召开

,时长01:00 近日,【DRMS】数字权益管理系统在美丽的泉城济南展开了为期两天一夜的“【DRMS】全国服务中心首期讲师特训”。此次特训主要针对服务中心的负责人和讲师进行的一场从认知到理念、从规划到执行、从机制到流程的全方位特训。特训中,…

麒麟信安操作系统里安装达梦数据库无法通过./DmServiceDMSERVER启动数据库实例服务的处理

问题现象如下: 但是通过./dmserver pathxxx/dm.ini又能正常启动 查看日志发现有生成日志:/home/dmdba/dmdbms/log/ dm_unknown_yyyymm.log。 日志内容如下: fail to load libpmem.so, libpmem.so: cannot open shared object file: No such …

Nexus私服搭建与使用

文章目录 1 私服简介2 私服安装步骤1:下载解压步骤2:启动Nexus步骤3:浏览器访问步骤4:首次登录重置密码 3 私服仓库分类4 本地仓库访问私服配置步骤1:私服上配置仓库步骤2:配置本地Maven对私服的访问权限步骤3:配置私服的访问路径 5 私服资源上传与下载步骤1:配置工程上传私服的…

css属性选择器、css3结构选择器、伪元素选择器、仿土豆网隐藏遮罩层案例、伪元素清除浮动

属性选择器 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>属性选择器</title><style>…

Kafka在Java项目中的应用

Kafka在Java项目中的应用 Docker 安装Kafka 一.首先需要安装docker,可看这篇文章安装docker 二.拉取zookeeper和KafKa镜像 docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafkaKafka组件需要向zookeeper进行注册,所以也需要安装zookeeper 三.启动zookeeper…

被00后卷的油尽灯枯了...

内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的&#xff1a;有的人骑在自行车上看书&#xff0c;有的人宿舍床上铺满了一摞摞的书&#xff0c;有的人甚至边骑车边端着电脑写论文。这些图片最早在清华北大的学霸之间流传。…

手机APP性能测试工具PerfDog安装教程及简单使用

一、下载PerfDog PerfDog下载安装传送带&#xff1a;PerfDog | 全平台性能测试分析专家 点击下载对应系统版本&#xff0c;Darren这里下载的是windows版本&#xff0c;苹果电脑可下Mac OS版本。 二、解压文件包 我们在想要存放PerfDog的文件路径先建立一个文件夹&#xff08;方…

远程桌面连接工具在哪里下载?

在市场上&#xff0c;有很多种不同的工具可用。一些远程桌面连接工具&#xff08;如RayLink&#xff09;具有高清流畅、操作简单和连接速度快的特点。而其他一些连接工具则更注重保护安全和数据保密性。不同的远程桌面连接工具各有特点&#xff0c;需要根据不同的需求进行选择。…

Linux将新硬盘挂载到指定目录

MBR分区最大2T&#xff0c;超过2T需用parted工具进行GPT分区 一、fdisk工具进行MBR分区&#xff08;2T以下&#xff09; 1. 查看当前所有硬盘 fdisk -l可以看到未分区的新硬盘/dev/sdd 2. 对新硬盘进行分区 fdisk /dev/sdd输入“n”&#xff0c;按“Enter”&#xff0c;开…

实验2 指令调度和延迟分支【计算机系统结构】

实验2 指令调度和延迟分支【计算机系统结构】 前言推荐代理服务器拒绝访问解决实验2 指令调度和延迟分支1 实验目的2 实验平台3 实验内容和步骤&#xff08;1&#xff09;启动MIPSsim。&#xff08;2&#xff09;进一步理解流水段的构成和各个流水寄存器的功能。&#xff08;3&…

降低FP独立站跳出率的5个小技巧,聪明人已经学起来了

做独立站特别是fp独立站的商家们&#xff0c;要想提高客户的体验感、达到更高的转化率&#xff0c;就要研究一下独立站的跳出率。跳出率可以衡量一个独立站的消费体验&#xff0c;同样也能衡量流量在独立站转化中的重要节点。消费者体验好、跳出率低的独立站才能够留住消费者&a…

机器学习算法应用实战笔记分享

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 整体代码请参考深度之眼的《机器学习算法应用实战》 视频链接&#xff1a;https://ai.deepshare.net/p/t_pc/goods_pc_detail/goods_detail/p_5e12aa8734510_IpNUGv5w 1.无监督学习方法---主成分分析 主成…

离散数学 | 图论 | 欧拉图 | 哈密顿图 | 割点 | 桥

本文主要解决以下几个问题&#xff1a; 1.欧拉图能不能有割点&#xff0c;能不能有桥&#xff1f; 2.哈密顿图能不能有割点&#xff0c;能不能有桥&#xff1f; 首先我们要明白几个定义 割点的定义就是在一个图G中&#xff0c;它本来是连通的&#xff0c;去掉一个点v以后这个…

前几天面了个30岁的测试员,年薪50w问题基本都能回答上,应该刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…

java 通过注解实现数据动态脱敏

一、为什么要数据脱敏&#xff1f; 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下&#xff0c;在不违反系统规则条件下&#xff0c;对真实数据进行改造并提供测试使用&…

10个高质量的简历制作网站推荐

刚经历完有金三银四&#xff0c;有没有因为简历不行&#xff0c;面试少的可怜的同学。 今天推荐10个高质量的简历制作网站&#xff0c;包括可以在线免费生成设计简历的网站。 1.即时设计资源社区 即时设计是国内首款专业级的 UI 设计工具&#xff0c;像 PC 端的网页&#xf…

ThingsBoard教程(四十六):规则节点解析 延迟节点 Delay Node。生成节点 Generator Node, 日志节点 Log Node

延迟节点 Delay Node Since TB Version 2.1 延迟接收消息的时间段可进行配置。 配置如下: Period in seconds - 指定暂停接收消息的时间段。 Maximum pending messages - 指定最大允许挂起消息的数量(即被暂停的消息队列)。 当特定传入消息的延迟期达到后,该消息将从…

MATLAB第九章_数据图形可视化

目录 数据图形可视化 MATLAB图形窗口 函数绘制 一元函数绘制 二元函数绘图 数据图形绘制简介 离散数据可视化 连续函数可视化 二维绘图函数 基本绘图 快速方程式画图 特殊二维图形 三维绘图函数 绘制三维曲面 生成栅格数据 网格曲线绘制 隐藏线的显示和关闭 数据…