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

作者:几冬雪来

时间:2023年5月19日

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

目录

前言:

1.模板: 

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

2.类模板:

2.STL: 

1.  什么是STL: 

2.STL六大组件: 

3.string类: 

结尾: 


前言:

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

C++——模板(初阶) + string_第1张图片

1.模板: 

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

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

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

C++——模板(初阶) + string_第2张图片

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

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

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

C++——模板(初阶) + string_第3张图片

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

因此代码会报错。 

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

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

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

C++——模板(初阶) + string_第4张图片

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

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

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

C++——模板(初阶) + string_第5张图片

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

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

2.类模板:

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

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

C++——模板(初阶) + string_第6张图片

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

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

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

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

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

 C++——模板(初阶) + string_第7张图片

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

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

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

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

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

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

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

2.STL: 

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

1.  什么是STL: 

2.STL六大组件: 

C++——模板(初阶) + string_第8张图片

3.string类: 

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

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

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

string类

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

C++——模板(初阶) + string_第9张图片

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

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

C++——模板(初阶) + string_第10张图片

 

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

C++——模板(初阶) + string_第11张图片 

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

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

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

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

C++——模板(初阶) + string_第12张图片

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

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

C++——模板(初阶) + string_第13张图片 

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

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

C++——模板(初阶) + string_第14张图片 

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

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

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

C++——模板(初阶) + string_第15张图片 

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

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

接下来还有一个问题。

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

C++——模板(初阶) + string_第16张图片

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

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

结尾: 

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

你可能感兴趣的:(java,开发语言)