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

STL和string实现 - 指南

STL和string实现 - 指南

什么是STL

STL(standard template libaray-标准模板库)C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架

STL的六大组件

标准库中的string

1、string类的核心成员

指向第一个有用字符地址的char*指针,奏效字符个数,高效字符容量。

注意有效字符个数是不囊括\0的,底层存储字符串所开辟的空间应该是实用字符容量+1,额外的一个是用来保存\0的。string之所以要在底层以c字符串的形式来维护,是方便将string转换成c字符串。当有效字符个数为0时,指针指向的是\0。

2、string类的核心方式:

构造函数:

string的默认构造函数,其底层字符串为空串

拷贝构造

c字符串构造函数

底层字符串为n个c字符

其他成员函数:

size

返回有效字符个数,不包括\0

resize

调整有效字符个数,如果n小于当前有效字符个数,那就直接截断,剩下的n个有效字符不变,有效字符容量不变。如果n大于当前有效字符个数,那就增加高效字符的个数,用c来填充新增加的字符,如果没有第二个参数那就用\0来填充

capacity

返回奏效字符容量,注意奏效字符容量+1==底层空间大小,会为\0留一个字节,所以该值返回的并不是底层空间大小

reserve

如果n<=当前有效字符容量,那该函数什么都不做,如果n大于当前实用字符容量,那就将管用字符容量增加到n,即底层空间扩大到n+1,扩容不影响实用字符

clear

调整有效字符个数为0,string的指针成员指向\0,有用字符容量不变

empty

假如当前有效字符个数为0,那就返回true,否则false

operator[ ]

返回指定下标对应的字符

operator+=

将string/常量字符串/字符 添加到string维护的字符串后面

insert

pos是有范围的,范围是0~size也就是说\0的位置也是可以插入的,假设不在这个范围,那就会报错越界,之后就是把string/c字符串/n个c字符 插入到指定位置,可能会有扩容发生

erase

pos是第一个要删除的字符的下标,pos的范围是0~size,如果pos为size就什么都不删除即可,len为要删除字符个数,若是该值大于pos以后的高效字符个数,那就只把pos以后的有用字符全删了即可

swap

交换两个string的成员变量即可

c_str

返回string的指针成员

find

从string维护的字符串的pos位置开始查找,找出第一个匹配目标 string/c字符串/字符 的位置,要是找不到就返回npos,npos是string类的一个静态成员变量,其类型为size_t,值为-1,相当于无穷大了

substr

截取一个子串,从pos下标开始,长度为len,假设第二个参数不给那默认是npos,如果长度len大于包含pos在内以后的有用字符个数,那就只返回包括pos在内以后的有效字符构造的string即可

静态成员变量:

npos表示一个非常大的数

string库中的全局函数:

这些函数都不是string类的成员函数,注意这些函数不是string类的静态成员函数,静态成员函数也是成员函数,但这些是全局函数,被std命名空间包裹

operator+

创建一个新的string,将第一个string和 string/c字符串/字符 都拼接到该新字符串后,然后返回新字符串

注意:operator+=是string的成员函数,该string是会被改变的,而且也不会有新string被创建

getline

从istream对象中读取一行数据到str中,终止符为\n

从istream对象中读取数据到str中,终止符自定义

string库的模拟实现

string模拟

http://www.jsqmd.com/news/145153/

相关文章:

  • Science | DAP-seq助力揭示CsARF3调控黄瓜雌花形成分子机制
  • LLM代理的库学习机制及其持续自我改进能力
  • 想转WebGIS开发?这份学习路线你一定要看!
  • Photoshop - Photoshop 工具栏(43)标尺工具
  • 2025毕业救命指南:全网十大降AI工具真实测评,亲测有效!
  • 搜索数据库表的性能优化过程
  • Expo Router
  • 揭示宝宝敏感肌纸尿裤护理指南:宝宝敏感肌纸尿裤哪个牌子靠谱|五大靠谱敏感肌纸尿裤品牌专业推荐 - 速递信息
  • 2025.12.26日21:51-ascertain确定;查明;探知
  • 球幕影院投资成本分析与9D电影设备多少钱一套的综合探讨
  • 2025 MBA必备9个降AI率工具测评榜单
  • 2025.12.26
  • 2026执医考生千万注意!老师这5种教学风格,决定你能否上岸! - 资讯焦点
  • CRMEB 多商户系统(Java)v2.2更新预告
  • 2026执医考试听哪个老师的课?往年上岸考生经验分享! - 资讯焦点
  • 干货!中医执业助理考试靠谱培训机构实力榜单 - 资讯焦点
  • 第22届(顺德)家电电源与智能控制技术研讨会
  • python range()函数
  • 执医考试老师课程测评:高口碑铭师推荐指南 - 资讯焦点
  • 妇产科副主任医师考试复习经验分享 - 资讯焦点
  • CentOS7安装MySQL完整教程 - 教程
  • 基于springboot法律援助平台的设计与实现(源码+lw+部署文档+讲解等)
  • 电动汽车动力系统匹配与整车经济性计算模型
  • 中医执医(助理)备考攻略!哪家培训机构实力领跑? - 资讯焦点
  • 【langchain框架——检索链】利用检索链创建自己的购物知识库并完成智能体的商品推荐
  • 一、Python核心语句结构(配套答案)
  • 城市仿真软件:CityEngine_(12).高级纹理与着色技术
  • 中医执医(助理)考评 实力培训机构护航执业征程 - 资讯焦点
  • 科学预防红屁屁:权威指南与五大敏感肌宝宝纸尿裤品牌推荐 - 速递信息
  • 干货整理:提示工程架构师总结的智慧城市场景Prompt设计模式