string类:`reserve()`,`resize()`详解

简介: string类:`reserve()`,`resize()`详解

string类的重要接口说明(1):reserve()resize()

一、reserve() 和 resize()

注意不要把 reserve(储备)reverse(逆向) 搞混了!

1.1
  • reserve():用于为字符串预留空间(扩容),以便后续操作可以直接在预留位置存放元素。

PS:

reserve(size_t n) 为string预留空间,不改变有效元素个数;当 reserve 的参数小于底层空间总大小时,reserve 不会改变容量大小

  • resize():用于调整字符串大小,包括增大和缩小字符串的大小

resize(size_t n) 和 resize(size_t n, char c) 都是将有效字符个数改变到 n 个。不同的是:当有效字符个数增大时,前者会用 ‘\0’ 进行填充,后者用字符 c 进行填充。

1.2 resize(n) 对 string::sizestring::capacity 的影响
  • n > capacity ——> 扩容+尾插

  • size < n < capacity ——> 尾插

  • n < size ——> 删除数据,只保留前 n 个

PS:

resize() 在改变元素个数时,如果是将元素个数增加,可能会改变 capacity 的大小—— n > capacitysize < n < capacity 这两种情况;如果是将元素个数减少,则不改变 capacity 的大小—— n < size 的情况。

相关文章
|
26天前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
31 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
28天前
|
存储 Java 测试技术
滚雪球学Java(47):String类教程:如何在Java中使用字符串操作
【6月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
24 2
滚雪球学Java(47):String类教程:如何在Java中使用字符串操作
|
7天前
|
Java API 索引
java中String类常用API
java中String类常用API
|
1天前
|
存储 Java API
Java基础之String类
Java的String类是引用类型,用于创建和操作字符串。字符串对象在`java.lang`包中,不可变。创建方式包括字面量和`new`关键字。字符串池存储字符串常量,避免重复。比较字符串用`equals()`(区分大小写)和`equalsIgnoreCase()`(不区分大小写)。`length()`返回长度,`concat()`或`+`拼接,`substring()`截取,`indexOf()`和`lastIndexOf()`查找,`replace()`替换,`split()`分割。这些是常用的字符串API。
7 0
|
1天前
|
Java
Java基础之String类
Java基础之String类
8 0
|
23天前
|
C语言 C++
C++初阶学习第六弹——探索STL奥秘(一)——标准库中的string类
C++初阶学习第六弹——探索STL奥秘(一)——标准库中的string类
16 0
|
25天前
|
算法 Linux C语言
7.学习STL和string类:版本、组件、构造、操作及应用
7.学习STL和string类:版本、组件、构造、操作及应用
|
3天前
|
存储
MyString:string类的模拟实现
MyString:string类的模拟实现
|
3天前
string类重要接口(2):`+=`
string类重要接口(2):`+=`
|
3天前
|
存储 编译器 C语言
【C++航海王:追寻罗杰的编程之路】string类
【C++航海王:追寻罗杰的编程之路】string类
7 0