C++——string

news2024/11/24 20:45:01

作者:几冬雪来 

时间:2023年5月29日

内容:C++——string内容讲解 

目录

前言: 

1.string(续):  

1.string::operator[]: 

2.string:: length():

3.string:: max_size():

4.string::capacity():

5.string::clear(): 

结尾: 


前言: 

在上一篇C++的博客中,我们结束了对C++中初阶模板的讲解,并且也是简单的介绍了一下我们C++的string,然而C++中string的知识十分之多,今天我们就进一步对其进行讲解和认识。 

   

1.string(续):  

接下来我们就来对string进行进一步的了解。 

1.string::operator[]: 

接下来讲解的是我们的——string::operator[]

在我们的C语言的学习中,如果涉及到了''[]''的话,第一反应一定会联想到我们的数组

那么在C++中我们的string里面的string::operator[],有是什么意思?

接下来我们就写一串代码

在这里用string的方法我们将字符一个一个的打印了出来

从下面s1的大小判断来看,它没有存放我们的''/0''

但是这里其实不然,如果我们让i<=s1.size()的话,它还是不会进行显示的

那么这里就有人问了:写了这个代码也没见得和string::operator[]有什么关系啊

这里就要牵扯到我们的底层原理了。

这里就是我们两个代码底层的区别

第一个代码进行[]++操作的话,类似于对其进行解引用的操作

而我们的第二个代码就涉及到了string::operator[],在这里它是一个赋值的操作,赋值的值就在[]中。 

在这里我们还涉及我们的迭代器,这个我们就需要轮到后面去讲解了。 

2.string:: length():

这里我们来讲解string:: length()

这里的length指的是长度的意思

这里我们的length和size的区别就在于,size表示数据的个数,length表示的是长度

这里我们也可以看出它们的大小都是相等的

为什么存在length的情况下还有size的存在

这是因为我们的length只能用于表达线性表,非线性表不太能表达出来

size的使用范围更加的广阔

可是因为向前兼容的缘故,length比size更早的出来了,但是以后我们都可以用size去替代length。 

3.string:: max_size():

这里我们的表示返回它可以达到的最大长度。 

这个地方我们就成功的打印出来了它可达到的最大长度。

但是我们的——string:: max_size,在实际上却是很少去使用它的。

因为在不同的接口下,它是有差异的

因此它在实际使用中毫无意义。 

但是我们不能将其删除,因为我们的语法和库都需要向前兼容。

4.string::capacity():

这里capacity则是用来查看容量的

这里我们就可以看出其容量的大小

它的大小为15

那么我们capacity的扩容机制又是怎么样的呢? 

这里就是我们每次扩容后容量的大小

我们可以看出我们的容量是成功的进行了扩容。 

但是我们也可以看出它的扩容大小是没有被规定的,第一次扩容是2倍扩容,后面的基于1.5倍的扩容。 

而在Linux中我们的容量则是以2倍的形式进行扩容操作的

5.string::clear(): 

下面来讲解我们的——string::clear()

看到clear,熟悉语言的人就明白这里的操作是我们清理数据的操作

从代码打印出来的结果上来看。

我们的string::clear(),将我们的数据进行了删除。

不过这里我们只是将string::clear的数据清空了而且,string::clear()并不会对capacity进行一个清空的操作

因为capacity是我们的容量,如果清空了之后,下次我们要向这个容量输入数据的话还要进行扩容的操作,比较的麻烦

结尾: 

我们的string要介绍的内容还有很多,剩下的内容我们就留到下一篇博客再进行讲解吧。最后希望这篇博客能给大家带来帮助。

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

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

相关文章

华南农业大学|图像处理与分析技术综合测试|题目解答:识别时钟上时间

设计任务 这是一幅表盘图像&#xff0c;试采用图像处理和分析技术&#xff0c;设计适当的算法和程序&#xff0c;计算出表盘上的指示时间&#xff08;要求精确到秒&#xff09;。请按统一要求写出算法原理、设计流程&#xff0c;并完成测试分析等报告内容。 算法设计 解题思路…

张小飞的Java之路——第四十二章——字节流

写在前面&#xff1a; 视频是什么东西&#xff0c;有看文档精彩吗&#xff1f; 视频是什么东西&#xff0c;有看文档速度快吗&#xff1f; 视频是什么东西&#xff0c;有看文档效率高吗&#xff1f; 诸小亮&#xff1a;下面我们学习——字节流 张小飞&#xff1a;什么是字…

article-并联机械手爪运动学分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3aNKIR4E-1685371700448)(data:image/svgxml;utf8, )] 2.4.3 基于Robotics Toolbox的工具箱的模型检测 上文中&#xff0c;我们已经对采摘机器手爪运动学理论模型进行了创建&#xff0c;接下来要用MA…

V3.0_用exec族函数替代system()

注意点&#xff1a;exec族函数的使用 以execl为例&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;exec族函数中的函数调用失败时会设置error并返回-1&#xff0c;然后从源程序调用点接着往下执行。 执行成功后不会返回&#xff0c;也不会从源程序调用点接…

Redis缓存一致性问题及解决方案

对于没有并发的用户请求 先更新缓存&#xff0c;后更新数据库先更新数据库&#xff0c;后更新缓存 两者第二步没成功&#xff0c;都有问题 如果更新缓存成功&#xff0c;更新数据库没成功&#xff0c;一旦缓存失效&#xff0c;读取的仍是旧值如果更新数据库成功&#xff0c;…

MySQL官网下载Linux版本安装包

步骤一&#xff1a;https://www.mysql.com/ 步骤二&#xff1a;https://www.mysql.com/downloads/ 步骤三&#xff1a;https://dev.mysql.com/downloads/ 步骤四&#xff1a;https://dev.mysql.com/downloads/mysql/

二十分钟秒懂:实现前后端分离开发(vue+element+spring boot+mybatis+MySQL)

目录 开发者介绍 什么是前后端分离开发 vue与springboot开发的优势 Vue.js 的优势&#xff1a; Spring Boot 的优势&#xff1a; vue与springboot如何实现前后端连接 demo简介 重要部分前端部分代码 重要部分后端代码 后端解决跨域问题 Controller部分 xml部分 se…

商城APP开发需要哪些功能,如何选择开发公司

商城APP开发的功能有很多&#xff0c;从功能上看主要分为以下几个大类&#xff1a; 一、商品展示类&#xff1a;商家可以在这里展示自己产品的种类、数量、价格等信息&#xff0c;消费者在浏览和选择的时候&#xff0c;能直观的看到商家介绍。 二、优惠促销类&#xff1a;商家…

JDBC与DBCP整合

DBCP:DataBase Connection Pool,数据库连接池负责分配、管理和释放数据库连接&#xff0c;它允许应用程序重复使用一个现有的数据库连接&#xff0c;而不是再重新建立一个&#xff1b;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接…

第四章 相似矩阵与矩阵对角化

引言 题型总结中推荐例题有蓝皮书的题型较为重要&#xff0c;只有吉米多维奇的题型次之。码字不易&#xff0c;如果这篇文章对您有帮助的话&#xff0c;希望您能点赞、评论、收藏&#xff0c;投币、转发、关注。您的鼓励就是我前进的动力&#xff01; 知识点思维导图 补充&…

【Web服务器集群】Apache配置与应用

文章目录 一、构建虚拟web主机1.概述2.httpd服务支持的虚拟主机类型3.构建虚拟Web主机3.1基于域名的虚拟主机3.2基于IP地址的虚拟主机3.3基于端口的虚拟主机 4.Apache连接保持5.Apache访问控制 二、Apache日志管理rotatelogs分隔工具 三、总结1.Web虚拟主机部署步骤2.网页根目录…

DN-DETR代码学习笔记

代码地址&#xff1a;GitHub - IDEA-Research/DN-DETR: [CVPR 2022 Oral]Official implementation of DN-DETR 论文地址&#xff1a; https://arxiv.org/pdf/2203.01305.pdf DN-DETR是在DAB-DETR的基础上完成的&#xff0c;DN-DETR的作者认为导致DETR类模型收敛慢的原因在于匈牙…

【Linux升级之路】4_进程控制

文章目录 前言一、【Linux初阶】fork进程创建 & 进程终止 & 进程等待二、【Linux初阶】进程程序替换 | 初识、原理、函数、应用 & makefile工具的多文件编译三、【Linux初阶】进程替换的应用 - 简易命令行解释器的实现结语 前言 本片博客是 Linux操作系统 进程控制…

【周末闲谈】谈谈数学转码这一年来的体会与反思

——我们走了太远&#xff0c;以至于忘了为何出发 前言 笔者本科读的是数学专业&#xff0c;就是每天和数学分析、高等代数、概率论、随机过程等等这些理论打交道的专业&#xff0c;这个专业出来工作好像一般有两个方向就是金融和计算机&#xff0c;我选择了计算机方向。主要…

【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版)

ChatGLM-6B模型结构代码解析(单机版) ​ 本文介绍ChatGLM-6B的模型结构&#xff0c;代码来自https://huggingface.co/THUDM/chatglm-6b/blob/main/modeling_chatglm.py。 相关博客 【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版) 【自然语言处理】【大模型】BL…

日撸 Java 三百行day56-57

文章目录 day56-57 kMeans 聚类1.kMeans聚类理解2.代码理解2.1代码中变量的理解2.2代码理解 day56-57 kMeans 聚类 1.kMeans聚类理解 无监督的机器学习算法&#xff0c;其中k是划分为几个簇&#xff0c;并且选择k个数据作为不同簇的聚类中心&#xff0c;计算每个数据样本和聚…

ASRT语音识别系统的部署以及模型的使用(运用篇)

ASRT语音识别系统的部署以及模型的使用(运用篇) 前言 ASRT是一个中文语音识别系统&#xff0c;由AI柠檬博主开源在GitHub上。 GitHub地址&#xff1a;ASRT_SpeechRecognition 国内Gitee镜像地址&#xff1a;ASRT_SpeechRecognition 文档地址&#xff1a;ASRT语音识别工具文…

Python打包成EXE

一、使用Pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller 1.2Pyinstaller打包步骤 Pyinstaller -F -w -i apple.ico py_word.py 结果&#xff1a; 运行结果&#xff1a; 二、使用Auto-py-to-exe auto-py-to-exe 是一个用于打包 python 程序…

第二届(2023年)中国国际培育钻石产业发展与创新大会盛大召开!

5月25-26日&#xff0c;由广东省商务厅、中国国际贸易促进委员会广东省委员会&#xff08;广东国际商会&#xff09;、广州市商务局、番禺区人民政府、广东省交易控股集团有限公司/广东省公共资源交易中心指导&#xff0c;广州钻石交易中心&#xff08;简称广钻中心&#xff09…

C语言深度解析--指针

目录 指针 指针的定义&#xff1a; 指针的大小&#xff1a; 指针和指针类型 野指针 指针运算 指针-整数&#xff1a; 指针-指针&#xff1a; 指针的关系运算&#xff1a; 指针和数组 二级指针 指针数组 理解指针的第一步是在机器级上观察指针表示的内容。大多数现代…