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

这篇具有很好参考价值的文章主要介绍了C++——模板(初阶) + string。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:几冬雪来

时间:2023年5月19日

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

目录

前言:

1.模板: 

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

2.类模板:

2.STL: 

1.  什么是STL: 

2.STL六大组件: 

3.string类: 

结尾: 


前言:

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

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

1.模板: 

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

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

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

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

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

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

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

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

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

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

因此代码会报错。 

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

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

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

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

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

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

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

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

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

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

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

2.类模板:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.STL: 

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

1.  什么是STL: 

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

2.STL六大组件: 

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

3.string类: 

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

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

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

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

string类

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

接下来还有一个问题。

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

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

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

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

结尾: 

在这里我们的模板初阶就这样的科普完毕了,接下来我们就要讲解C++中的核心内容STL了。大家一定要在学好新知识的过程中巩固旧知识,这样才能有所提升。最后希望这篇博客能带来帮助。文章来源地址https://www.toymoban.com/news/detail-451605.html

到了这里,关于C++——模板(初阶) + string的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++初阶—string类(1)

      目录 1. 为什么要学习string类 1.1 C语言中的字符串 1.2 两个面试题 2. 标准库中的string类 3. string类对象的常见构造  string常见构造类的使用代码演示 4. string类对象的容量操作 string容量相关方法使用代码演示 5. string类对象的访问及遍历操作 string中元素访问及遍历代码演示 6.

    2023年04月08日
    浏览(32)
  • 【C++初阶】第六站 : 模板初阶

    前言: 本章知识点:泛型编程、函数模板、类模板 专栏: C++初阶 目录 泛型编程 函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 5.模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 如何实现一个通用的交换函数呢? 代码如下:

    2024年03月17日
    浏览(44)
  • 【C++初阶】模拟实现string的常见操作

    👦个人主页:@Weraphael ✍🏻作者简介:目前学习C++和算法 ✈️专栏:C++航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨ 为了方便管理代码,分两个文件来写: Test.cpp - 测试代码逻辑 string.h - 模拟实现 strin

    2024年02月12日
    浏览(52)
  • 【C++初阶】9. string类的模拟实现

    string类的完整实现放这里啦!快来看看吧 string类的作用就是将字符串类型实现更多功能,运算符重载,增删改查等等操作,所以其成员就包含char*的字符串 在之前的学习过程中,我们了解到类中存在的六个默认函数,其中就包含默认构造函数,那么对于string类是否需要用户自

    2024年02月09日
    浏览(34)
  • 【C++初阶】学习string类的模拟实现

    前面已经学习了string类的用法,这篇文章将更深入的学习string类,了解string类的底层是怎么实现的。当然,这里只是模拟一些常用的,不常用的可以看文档学习。 我们一共创建两个文件,一个是test.cpp文件,用于测试;另一个是string.h文件,用于声明和定义要模拟的string类。

    2024年02月03日
    浏览(52)
  • 【C++初阶】string 类的认识与学习

      在学习string类之前,先在这里推荐2个好用的网站,可以用来查阅C++的相关知识 https://cplusplus.com https://en.cppreference.com/w/ 上面的是非官方的,下面的官方的,但是个人感觉还是上面的好用。 简单来说, string 是C++中用来管理字符串的类。 他有很多接口,大致分为: 1.string类

    2024年02月09日
    浏览(48)
  • 【C++初阶】STL之学习string的用法

    STL是C++的标准模板库 ,里面包含了许多 算法和数据结构 ,例如我们熟悉的顺序表、链表、栈和队列以及一些常见的算法等等,编程者想使用这些就可以直接从库中调用,不必再自己造轮子了。 下面为STL内容的一张图: 接下来,我们要学习STL中的string。 string 是C++的一个类模

    2024年02月04日
    浏览(44)
  • 【C++初阶】第八站:string类的模拟实现

    目录 string类的模拟实现 经典的string类问题 浅拷贝 深拷贝 写时拷贝(了解) 构造函数 string的全缺省的构造函数: string的拷贝构造函数 传统写法 现代写法 string的赋值重载函数 传统写法 现代写法 string的无参构造函数: 遍历函数 operator[ ] 迭代器 迭代器的底层实现begin和end:

    2024年04月28日
    浏览(39)
  • 【C++】模板初阶——函数模板和类模板

    🚀 作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。 🚁 个人主页:不 良 🔥 系列专栏:🛸C++  🛹Linux 📕 学习格言:博观而约取,厚积而薄发 🌹 欢迎进来的小伙伴,如果小伙伴们在学习的过程中,发现有需要纠正的地方,烦请指正,希望能够与诸君一同

    2024年02月10日
    浏览(43)
  • 【C++】模板初阶 【 深入浅出理解 模板 】

    如何实现一个通用的交换函数呢? 使用函数重载虽然可以实现 ,但是有一下几个不好的地方: 重载的函数 仅仅是类型不同 ,代码复用率比较低, 只要有新类型出现时,就需要用户自己增加对应的函数 代码的可维护性比较低,一个出错可能所有的重载均出错 那能否 告诉编

    2024年02月05日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包