C++ STL之string初始

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||

C++ STL之string初始

  • STL介绍
  • string类
    • 数据成员
    • 成员函数
      • 构造函数
      • 容量和大小
      • 访问
      • 修改
      • 迭代器初识

STL介绍

STL(标准模板库),自C++11后引进,该库中含有各种常见数据结构,算法…模板。
在这里插入图片描述

它们的存在使得我们编写C++程序的效率更高,STL并非是C++祖师爷开发,大多数都由一些个人,公司等,其中有各种版本,我们主要以P.J.版和SGL版为例。

string类

std::string ------ typedef basic_string< char > string;

string类就是一个字符串和各种函数包装成了一个类,string类的出现其实比STL早,随后被归于了STL中。

数据成员

string中较为重要的数据成员有

char str[]
int capacity
int size

成员函数

构造函数

string有多个构造函数。
在这里插入图片描述
其中(1),(2),(4)需要较为常用,需要记住,(3)函数的作用如图。
在这里插入图片描述

如图所示,pos是从某个字符开始,而len则是长度了,该构造函数的作用就是从下标为pos的字符开始的后len个字符拷贝给一个对象。
len有一个缺省值,npos,该值是一个静态成员变量,static size_t npos = -1该值是一个很大的值,是为了不论字符长度多大,只要缺省len,则将从pos开始的字符全都拷贝
在这里插入图片描述

容量和大小

在这里插入图片描述
其中最重要的是,size,resize,capacity,reserve
size和length的作用都一样,计算串的大小,不包含’\0’,存在2个作用相同的函数的原因就是string的出现比STL早,但最后被归于STL,而语言又只能向前更新。
在这里插入图片描述
capacity函数用来计算当前字符数组的容量,要注意的是,容量capacity和大小size是不同的,size及该串有多少个有效字符,而capacity则代表该串有多少个空间,所以size < capacity
在这里插入图片描述
resize,reserve,resize用来重新设置串的大小,reserve用来设置串的容量。
在这里插入图片描述

此处reserve后,容量比30大的原因是因为vs下对string扩容会有内存对齐,在Linux下使用该函数就不会存在该问题。

resize的使用会影响到capacity。
在这里插入图片描述
resize函数的用处不在于此
在这里插入图片描述
在这里插入图片描述

若resize后大小大于原大小,则在其余空间处部字符c。

访问

在这里插入图片描述
访问主要了解operator[],at
这2个函数除了在越界访问时进行的警告不同,其他几乎一样,在C语言中,检查越界是抽查式,而C++的访问函数解决了这个问题,只要越界,必会报错。
在这里插入图片描述

修改

在这里插入图片描述
关于修改的函数主要了解operator+=,insert,erase
operator+=可以在一个string类型的后面追加字符串/字符,这是一个十分常用的函数。
在这里插入图片描述
insert 可以在某个位置插入某些字符/串在这里插入图片描述
在这里插入图片描述
erase可以对串的某个范围/使用迭代器迭代,进行删除。
在这里插入图片描述
在这里插入图片描述

迭代器初识

迭代器是各种可迭代类型中的一个成员,迭代器可以帮助我们完成对此种类型的遍历。

声明一个迭代器(以string为例)
在这里插入图片描述
普通迭代器和const迭代器的区别是普通迭代器可以修改迭代器所指向的内容,而const迭代器无法修改其所指向的内容。

与迭代器有关的函数如图。
在这里插入图片描述
这些函数其实就2中类型,(begin end) (rbegin rend),c开头的成员函数其实就是返回const迭代器,这些函数可以在某些时候增加代码可读性,如图。

在这里插入图片描述
begin,end begin函数返回可迭代类型最开始的起始位置,是闭区间,end返回终止位置,是开区间[begin,end)
rbegin,rend则是逆置的意思,及rbegin = end,rend = begin,依旧是左闭右开[rbegin,rend)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JSP基本表单和Request对象使用例子

表单的jsp&#xff1b; <%page contentType"text/html;charsetgbk" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><titl…

golang学习笔记——接口interfaces

文章目录 Go 语言接口例子空接口空接口的定义空接口的应用空接口作为函数的参数空接口作为map的值 类型断言接口值 类型断言例子001类型断言例子002 Go 语言接口 接口&#xff08;interface&#xff09;定义了一个对象的行为规范&#xff0c;只定义规范不实现&#xff0c;由具…

数据库大事记

数据库分类分类方法为&#xff1a;按数据模型分类、按业务类型分类、按部署方式分类、按存储介质分类。 按数据模型分类 按业务类型分类 按部署方式分类 按存储介质分类 喜欢点赞收藏&#xff0c;下期再见。

【Redux】Redux 基本使用

1. Redux 快速上手 Redux 是 React 最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以独立于框架运行。 <button id"decrement">-</button> <span id"count">0</span> <…

多线程Thread(初阶一:认识线程)

目录 一、引用线程的原因 二、线程的概念 三、进程和线程的区别 四、多线程编程 一、引用线程的原因 多任务操作系统&#xff0c;希望系统能同时运行多个任务。所以会涉及到进程&#xff0c;需要对进程进行管理、调度等。 而单任务操作系统&#xff0c;就完全不涉及到进程…

YOLOv8-Seg改进策略:全新的聚焦式线性注意力模块Focused Linear Attention | ICCV2023

🚀🚀🚀本文改进:深入分析了现有线性注意力方法的缺陷,并提出了一个全新的聚焦的线性注意力模块(Focused Linear Attention),同时具有高效性和很强的模型表达能力。 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,…

深度学习系列53:mmdetection上手

1. 安装 使用openmim安装&#xff1a; pip install -U openmim mim install "mmengine>0.7.0" mim install "mmcv>2.0.0rc4"2. 测试案例 下载代码和模型&#xff1a; git clone https://github.com/open-mmlab/mmdetection.git mkdir ./checkpoi…

2023年【熔化焊接与热切割】考试试卷及熔化焊接与热切割试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试试卷考前必练&#xff01;安全生产模拟考试一点通每个月更新熔化焊接与热切割试题及解析题目及答案&#xff01;多做几遍&#xff0c;其实通过熔化焊接与热切割模拟考试很简单。 1、【单选题】 对…

React+后端实现导出Excle表格的功能

最近在做一个基于Reactantd前端框架的Excel导出功能&#xff0c;我主要在后端做了处理&#xff0c;这个功能完成后&#xff0c;便总结成一篇技术分享文章&#xff0c;感兴趣的小伙伴可以参考该分享来做导出excle表格功能&#xff0c;以下步骤同样适用于vue框架&#xff0c;或者…

“轻松实现文件夹批量重命名:使用顺序编号批量改名“

你是否曾经遇到过需要批量重命名文件夹&#xff0c;却因为繁琐的手动操作而感到困扰&#xff1f;现在&#xff0c;我们为你带来了一款全新的工具——轻松实现文件夹批量重命名&#xff0c;使用顺序编号批量改名。这款工具将帮助你轻松解决文件夹重命名的问题&#xff0c;提高工…

SpringSecurity5|12.实现RememberMe 及 实现原理分析

security/day08 这个功能大家还熟悉么&#xff1f;我们在登录网站的时候&#xff0c;除了让你输入用户名和密码&#xff0c;还会有个勾选框&#xff1a; 记住我&#xff01;&#xff01;&#xff01;不是让大家记住我哈。 值得一提的是&#xff0c;Spring Security 也提供了这个…

2023年汉字小达人市级比赛在线模拟题更新:40分钟150题完整对标

今天是2023年11月19日&#xff0c;距离11月30日的汉字小达人市级比赛还有11天。许多孩子正在利用难得的周末抓紧练习和备赛。 结合一些孩子的反馈和需求&#xff0c;我把150题的在线模拟题做了更新&#xff0c;增加了前面的个人信息填写的部分&#xff0c;并且把整个试卷的完成…

python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)

省流建议 本文针对以下需求&#xff1a; 想自动化标注一些目标不再想使用yolo想在目标检测/语意分割有所建树计算机视觉项目想玩一玩大模型了解自动化工具了解最前沿模型自定义目标P图替换… 确定好需求&#xff0c;那么我们发车&#xff01; 实现功能与结果 该模型将首先…

python——第九天

今日目标&#xff1a; 偏函数 递归 字符串对象 切片 常见排序和查找 偏函数&#xff1a; python中存在一种函数的特殊使用&#xff0c;称为偏函数 如果在调用某个函数时&#xff0c;恰好某一个或者&#xff0c;某一些参数都是一个固定值&#xff08;正好不是默认值&#xff09;…

Linux常用命令——bye命令

在线Linux命令查询工具 bye 命令用于中断FTP连线并结束程序。。 补充说明 bye命令在ftp模式下&#xff0c;输入bye即可中断目前的连线作业&#xff0c;并结束ftp的执行。 语法 bye实例 bye在线Linux命令查询工具

从0开始学习JavaScript--JavaScript 数字与日期

JavaScript中的数字和日期是处理数值计算和时间相关任务的核心。本文将深入研究JavaScript中数字的表示、常见运算&#xff0c;以及日期对象的创建、格式化等操作&#xff0c;并通过丰富的示例代码&#xff0c;可以更全面地了解和应用这些概念。 JavaScript数字基础 JavaScri…

【RocketMq系列-01】RocketMq安装和基本概念

RocketMq系列整体栏目 内容链接地址【一】RocketMq安装和基本概念https://zhenghuisheng.blog.csdn.net/article/details/134486709 RocketMq安装和基本概念 一&#xff0c;RocketMq安装和基本概念1&#xff0c;RocketMq基本安装(本地安装)2&#xff0c;Rocketmq的核心概念2.1&…

Linux使用ifconifg命令,没有显示ens33

Linux使用ifconifg命令&#xff0c;没有显示ens33 1.问题2.步骤2.1 查看虚拟机的组件是否启动了2.2 修改网络配置文件 ONBOOT修改为yes2.3 重启网络2.4 修改网络服务配置 3.解决 1.问题 打开虚拟机准备使用xshell连接时发现连接失败&#xff0c;在机器上查看ip发现ens33不现实…

Mysql主从搭建

Mysql主从搭建 1.Mysql下载1.1 查看操作系统2.2 下载mysql安装包 2.Mysql安装2.1 解压2.2 目录重命名2.3 创建data&#xff0c;存储文件2.4 创建用户组2.5 授权用户2.6 配置环境变量2.7 编辑my.cnf2.8 创建相关目录和文件2.9 初始化数据库2.10 复制mysql.server到/etc/init.d/下…

安卓环境搭建及运行安卓应用

1 jdk安装 安卓项目也是java开发的&#xff0c;运行在虚拟器上&#xff0c;安装jdk及运行的时候&#xff0c;就会带上虚拟器 jdk前面已经讲过&#xff0c;不在讲解 2 下载安装androj studio https://developer.android.google.cn/studio?hlzh-cn 下载下来&#xff0c;双击…
最新文章