1. 什么是STL
- STL(standard template library—尺度模板库):是C++尺度库的重要组成部门,而且它还是一个涵盖数据结构与算法的软件框架
- STL发展至今一共出现4个版本,原始版本、P.J.版本、RW版本、SGI版本,而我们主要学习第4个版本,它的命名风格和编程风格阅读性非常高
2. STL六大组件
- STl六大组件的内容有点多,不外也有一些我们之前见过的Stack、Queue等,它就是集数据结构与算法的一个尺度库,全部内容后期会慢慢讲,本日先来学习第一个,容器中的string类,容器说白了,就是数据结构
3. 尺度库中string类
- C语言尺度库提供了一些str系列的库函数,用来处理字符串,但是这些库函数和字符串是分离开的,底层空间必要用户本身管理,可能还会越界访问,因此C++特别引入了string类来进一步美满字符串的操作
- 在讲string前,先学习2个在string类内里常常使用的auto和范围for
3.1 auto关键字
- C++11之前,auto修饰的变量,是具有自动存储器的局部变量,之后C++11赋予auto全新的含义:auto不再是一个存储范例的指示符,而是作为一个新的范例指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导可得
- 简朴的说,auto修饰的变量,它的范例是由操作符右边的对象推导出来的
- 一行声明多个变量时,这些变量的范例必须相同,否则编译器会报错,编译器只对第一个范例推导,然后用退出来的范例定义其他变量
- auto不能作为函数的参数,但是可以做返回值
- auto不能直接用来声明数组
- 上面简朴先容了auto的用法,它是根据已知对象的范例来推导新创建的对象,但是上面的场景一样平常不消auto,按照之前的逻辑写就没有任何问题,为何还要多此一举呢?但是有些场景下,auto用起来就比较爽
- 这是一个容器,可以看出dict这个对象的范例就挺长,map就是一个容器,这个我们以后讲,这里先见地一下auto的使用场景
3.2 范围for
- 对于一个有范围的集合,步伐员本身来说明循环的范围有点多余,还容易出错,因此C++11引入了范围for的概念,它从冒号:开始分为两部门,冒号前面接迭代的变量,最后+迭代的范围
- 范围for自动迭代,自动取数据,自动判断结束
- 范围for可以用到数组和容器对象上的遍历
- 范围for的底层很简朴,容器遍历就是替换为迭代器,这个我们以后会讲
- 范围for在遍历数组时,从起始位置开始将元素赋值给对象e,然后数组指向下个元素,再将数组下个元素赋值给元素e,以此类推,直到遍历完备个数组
- 假如不想让数组arr赋值给对象e,可以使用引用
- 范围for有三个自动:自动取对应容器(如:数组、列表等)内里的元素,自动++找下个元素,自动判断结束
- for (auto element : range) {
- // 在这里处理element
- }
复制代码
- range可以是数组、列表、向量大概任何可以生成迭代器的范围
3.3 string类的范例
- C++string类中引入了几个char范例,简朴了解下
- wchar_t是宽字节范例,大小为2个字节
- char16_t为2个字节,char32_t为4个字节大小
3.4 string类的常用接口(string类对象的常见构造)
分类功能说明string( )构造空的string类对象,即空字符串string( const char* s)用常量字符串来构造string类对象string(const string& s)调用拷贝构造函数来初始化string对象string(const string& str, size_t pos, size_t len)从给定的string对象str的pos位置开始,拷贝构造len个字符给string新创建的对象string (const char* s,size_t n)用常量字符串s的n个字符构造string对象string(size_t n, char c)对string类的对象构造n个c字符
- string类的成员函数begin( )和end( )分别返回指针指向对应字符的位置,不外这是底层的实现方法,在C++他们被封装成了一个迭代器,用来访问string类的对象
3.5 string的析构和赋值运算符重载
3.6 string类对象的容量操作
函数名功能说明size(重点)返回字符串有用字符长度length返回字符串有用字符长度capacity返回总空间大小empty(重点)判断字符串是否为空,是就返回true,否则返回falseclear(重点)清空有用字符reserve(重点)为字符串预留空间,防止插入数据时空间不敷resize(重点)将有用字符的个数改成n个,多出的用字符c填补max_size(基本不消)返回容器可以容纳的最大的元素个数shrink_to_fit(慎用)减少容器的容量以顺应其当前大小,并销毁超出当前大小的全部元素
- max_size也不常用,这里仅做了解,它表现容器可以容纳多大的空间,可以看出,它的数值很大,但是底层实现原理为数组,开不出那么大的连续空间
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |