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

C++: string(二)

✨✨ 欢迎大家来到我的文章✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
分类专栏:c++
我的主页:tyler 's blog

文章目录

  • 一 string的成员函数
  • 1 insert
  • 2 resize
  • 3assign
  • 4erase
  • 5replace
  • 6 find
  • (1) find
  • (2)rfind
  • (3)find_first_not_of
  • (4)find_first_of
  • 7substr
  • 二总结

string与容器很像虽然没归类到容器内,我们完全可以把它归到容器内讲解

在这里插入图片描述

一 string的成员函数

1 insert

随着字符增加,头插效率越来越低
在这里插入图片描述

在这里插入图片描述

其他还有迭代器版本和其他的版本就不演示了

2 resize

在这里插入图片描述

有一个重载,第一个是把默认成员移到第n个位置,第二个函数是把默认成员移到第n个位置(size所在地)
n>capacity就扩容,
n<capacity插入

我们知道string的底层类似于栈的结构,也是有capacity ,size之类的默认成员变量的。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3assign

在这里插入图片描述

这个用的比较少,是从某字符起到分配作用

在这里插入图片描述

4erase

在这里插入图片描述

我们用的是第一个重载接口比较多erase(0,x),这就是头删

5replace

在这里插入图片描述

我们甚至会看到5个参数的replace
在这里插入图片描述
数字都是从pos开始之后len个字符

6 find

(1) find

find接口是返回的size_t来寻找指定字符或者字符串
在这里插入图片描述

find可以和replace配合使用,来循环改变指定字符,如下面把l替换为空格。
上面npos是静态成员变量可以根据类名直接::访问,因为没找到失败是返回npos,所以我们这里循环条件是!=npos
在这里插入图片描述

在这里插入图片描述

这里时间效率会很低,因为涉及到数据挪动
我们可以再定义string s2,以空间换时间

在这里插入图片描述

这里时间 复杂度为O(n)比上面replace好多了,原理是以空间换时间。

(2)rfind

在这里插入图片描述

这是从后往前找你指定的字符,和find是反着来的,不演示了。

(3)find_first_not_of

在这里插入图片描述
这是寻找不是str内字符串内字符位置

我们可以这样删除指定字符
在这里插入图片描述

(4)find_first_of

在这里插入图片描述

和刚刚find_first_not_of相反不做赘述

7substr

在这里插入图片描述

这个很重要是从截取指定位置到指定位置字符串

二总结

1 我们这章学习了string的成员函数,在https://legacy.cplusplus.com/
网站中可以把接口分为按不同标准分成好多类(如下面Capacity,Element access),下面是我们在string常用的
其他不常用的我们要么有替代接口或者功能不常用
2 c++是极度关注效率的语言,要是涉及到修改,删除,替换(尾插不算),这样时间复杂 度就会不好。

在这里插入图片描述


http://www.kler.cn/a/399215.html

相关文章:

  • Excel SUMIFS
  • 【Node.js】使用 Node.js 需要了解多少 JavaScript?
  • torchvision库在进行图片转换操作中报antialias参数没有显式设置会导致不同图片后端中的值不统一的警告信息
  • [系统安全] PE文件知识在免杀中的应用
  • eBPF on Go
  • C函数如何返回参数lua使用
  • ReactPress与WordPress:一场内容管理系统的较量
  • 在 MySQL 8.0 中,SSL 解密失败,在使用 SSL 加密连接时出现了问题
  • 【C++】引用(reference)
  • Linux core转储文件排查及命令整理
  • MySQL数据库备份与恢复完全指南
  • 使用 Go 实现将任何网页转化为 PDF
  • MATLAB向量元素的引用
  • 「Mac玩转仓颉内测版14」PTA刷题篇5 - L1-005 考试座位号
  • alibabacloud学习笔记15
  • 【系统架构设计师】真题论文: 论大规模分布式系统缓存设计策略(包括解题思路和素材)
  • 【VIM】vim 常用命令
  • [C/C++] move示例
  • 198. 打家劫舍【C++】【动态规划】
  • Nature Electronics|综述| 柔性脑机接口 (健康监测/柔性电极/可植入式电子/可穿戴电子/脑机接口/柔性电子/人机交互)
  • 【Mysql】Mysql函数(上)
  • 实用教程:如何无损修改MP4视频时长
  • leetcode-44-通配符匹配
  • Jenkins + gitee 自动触发项目拉取部署(Webhook配置)
  • 【JSOO】设计模式
  • 2024-11-15 Element-ui的tab切换中table自适应宽度无法立即100%的问题