13string类

一,认识string类<string> + std

1. string是表示字符串的字符串类
2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
比特科技
3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> 
string;
4. 不能操作多字节或者变长字符的序列。
在使用string类时,必须包含#include<string>头文件(有时不需要)以及using namespace std;

二,string类常用的接口

1.构造

函数名称功能说明
string()构造空的string类对象

string(const string& s)

拷贝构造
string(const char* s)提供一个c语言的字符串进行构造
string(size_n,char ch)string类对象中包含n个字符串ch

2.迭代器

本质:指针——使用:和指针使用类似的方式使用

正向迭代器begin()|end()        反向迭代器rbegin()|rend()

3.容量

函数名字功能说明
size返回字符串有效长度
length返回字符串有效长度
capacity返回空间总大小
empty检测字符串释放为空串,是返回true,否则返回false
clear清空有效字符
reserve为字符串预留空间**(缩小不会改变)
resize将有效字符的个数该成n个,多出的空间用字符c填充

reserve:扩容,不会改变有效元素的个数

reserve(size_t  newcapacity)

假设当前扩容的string对象底层容量oldcapacity

newcapacity>oldcapacity:reserve方法才会真正扩容

newcapacity<oldcapacity

        newcapacity>=16:reserve不会将空间缩小

        newcapacity<=15:reserve才会将空间缩小 

PJ版本中的STL 的string:内部维护了一个固定大小的数组——16

如果构造了string对象时,字符串长度小于等于15个字节,直接放到string对象内部的数组中,不需要从堆上申请空间——效率高:因为80%的字符串长度小于15字节
如果字符串长度大于15个字节,string对象在构造时从堆上申请空间

4.元素访问

T&operator[](size_t index) | const T&operator[](size_t index)const-----assert异常

T&at[](size_t index) | const T&at[](size_t index)const-----out_of_range异常

5.修改

void push_back(char ch)

6.特殊操作

size_t find(char ch,size_t pos = 0);

size_t find(const string&s,size_t pos = 0);

从前往后找第一个s出现的位置,找到之后返回s首字母在字符串中的位置,没有找到返回的是npos——npos是string类内部维护的一个静态成员变量

rfind(从后往前找)

三,string类模拟实现

1.写时拷贝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值