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

string(1):

我们今天开始学习STL,我们的string是我们的STL里面的一个容器类。

我们的C++含有许多的库:有STL,也有其他的库。

1. string的常见接口:

在使用string类时,必须包含#include头文件以及using namespace std;

1. string的构造函数:

我们看我们的这个图片,上面的第一个constructor函数,这个就是我们的构造函数。然后下面标注了比较重要的几个构造函数。

 我们的箭头标记起来的就是比较重要的一些构造函数:

我们看上面的代码,我们把这几个比较重要的构造实现了出来,然后因为我们的string是重载了流插入和流提取的:

所以我们就可以直接对我们的类进行打印,就不需要我们自己对我们的类写运算符重载了,就很方便,而且我们的这个库里面的类还重载了其他的一些。

我们的string里面的构造函数,我们讲了比较重要的一些,剩下的几个我们了解一下:

我们看上面的代码的倒数第二行,我们看到这个赋值运算符,我们这也是可以直接使用它对我们的string类进行赋值运算;我们的库里面就对他进行了运算符重载;

2. string的赋值重载:

这个就是我们的赋值重载,这个比较简单;

2. string类对象的访问及遍历操作:

首先我们看:

第一种:下标+方括号;

我们重载了这个方括号引用;我们的类就可以直接使用它;

我们就可以直接对我们的类里面的字符串修改;

咱们的运算符重载的本质就相当于是我们的下面的图片:

我们对我们的方括号进行重载,然后返回i位置的值的引用,我们就可以修改他。

这时候我们有了这个方括号,我们要遍历我们的字符串就显得比较简单了;

我们看,我们的库里面就带着这些东西,我们要知道我们的字符串的长度的话,我们直接调用我们的size就可以,我们就不需要像以前C语言一样还要测量我们的字符串的长度;(比较方便)

我们的size就表示我们的元素的个数。我们可以直接调用。

第二种:迭代器;

我们看一下我们的迭代器:

我们的begin和end也是我们的库里面就有的,我们可以直接使用;

我们的end是在我们的最后一个元素的下一个元素,我们的end指向的\0的位置。

it表示的是我们的指向我们的第一个位置的指针。

我们还可以修改他;也能对每个数据进行修改;

我们的迭代器是很重要的一种遍历的方式,我们会了迭代器,其他的类的话,我们也可以使用迭代器来进行遍历。

第三种:范围for;

在学习我们的第三种遍历方式之前,我们补充一个知识:auto;

我们看我们的代码:我们的k是什么auto,这是什么类型,我们就要看是谁给他初始化的值。

右边是i,i是int类型的值,那么k这时候也就是int类型的。

所以我们的auto的作用就是替换我们的一些类型,让我们的编译器来推。

我们继续来看这个,我们刚才在设置迭代器的时候,我们的迭代器的类型比较长,这时候我们就可以让auto来代替,让编译器自己去推类型。(但是前提是你要自己知道这个返回值,不然可能看不懂)。

auto还可以代表指针:

我们看我们的这个代码:我们的第一行右边我们可以传i,也可以传&i,我们可以传地址,也可以不传地址,都可以,但是我们的第二行,我们的下面,我们必须要传地址,因为我们的下面已经被指定了。

我们的第三行表示的是我们的auto也可以是引用的参数。

我们继续看上面的代码,我们的auto也可以做参数和返回值,但是这个要比较新的编译器支持,并且这个在使用的时候要谨慎。

我们回归我们的范围for:

容器就是我们的string,还有以后学的vector,还有list。

其实我们的范围for的参数类型也可以是具体的类型,但是我们一般会使用auto来进行,让编译器去推导。

我们的范围for的底层还是我们的迭代器。

相关文章:

  • 基于pycatia的CATIA装配体STP批量导出技术解析与优化指南
  • 分治-快速排序系列一>快速排序
  • VMWare:解决Linux虚拟机找不到共享文件夹
  • Java单元测试、Junit、断言、单元测试常见注解、单元测试Maven依赖范围、Maven常见问题解决方法
  • ubuntu高并发内核参数调优 - (压测客户端调优)
  • 【面试场景题-Redis中String类型和map类型的区别】
  • 蓝桥杯练习day2:执行操作后的变化量
  • 如何判断 MSF 的 Payload 是 Staged 还是 Stageless(含 Meterpreter 与普通 Shell 对比)
  • MySQL:数据库基础
  • 解决虚拟机网络问题
  • 【论文笔记】VGGT-从2D感知3D:pose估计+稠密重建+点跟踪
  • 爬虫基础之爬取猫眼Top100 可视化
  • 程序化广告行业(29/89):人群策略在广告投放中的应用
  • 法兰克仿真软件FANUC CNC Guide v25.0 安装教程及中文设置
  • 【FastGPT】利用知识库创建AI智能助手
  • 【java】反射
  • SAP S/4 HANA 升级带来的 3个黄金周期
  • PointVLA:将 3D 世界注入视觉-语言-动作模型
  • 怎么用LoRA的低秩结构近似Fisher矩阵
  • Pytorch使用手册—扩展 TorchScript 使用自定义 C++ 操作符(专题五十三)
  • “仿佛一场追星粉丝会”,老铺黄金完成国内头部商业中心全覆盖,品牌化后下一步怎么走?
  • 魔都眼|咖啡节上小孩儿忍不住尝了咖啡香,母亲乐了
  • 西湖大学2025年上海市综合评价招生简章发布
  • 王毅谈金砖国家开展斡旋调解的经验和独特优势
  • 解放日报:服务国家战略,加快建成科技创新高地
  • 学有质量、查有力度、改有成效,广大党员干部落实中央八项规定精神