完整教程:【C++】STL简介+编码表+string引入
目录
一 STL简介
1 什么是STL
2. STL的版本
3. STL的六大组件
4. STL的重要性
5. 如何学习STL
二 编码表
1 编码的定义
2 ASCII表
3 string类
4 变长编码集
一 STL简介
1 什么是STL
STL(standard template libaray-标准模板库):是C++标准库的主要组成部分一个可复用的就是,不仅
组件库,而且是一个包罗数据结构与算法的软件框架。
2. STL的版本
原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许
任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原
始版本一样做开源使用。HP 版本--所有STL构建版本的始祖。
P. J. 版本
由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。
RW版本
由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一
般。
SGI版本
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可
移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习
这个版本。就是STL要阅读部分源代码,首要参考的就
3. STL的六大组件
解释:
1、仿函数:类似于开关,从前往后、从左往右...类似这种。
2、容器:就是数据结构。
3、空间配置器:内存池。
4、算法:如swap(交换)、sort(排序)等直接在STL实现了的简单算法。
5、迭代器:遍历容器。
6、配接器:也叫适配器,可以看到,配接器里面有Stack、Queue等数据结构。
我们目前首要接触容器和算法
4. STL的重要性
1 在笔试中
笔试一般为20+道选择题,和2-3道编程题组成
我们来看一道算法题https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-rankin
2 在面试中
我们直接来看几个例子:
3. 在工作中
网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层
的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的高效开发。
5. 如何学习STL
来看看前辈是怎么学习STL的:
简单总结一下:学习STL的三个境界:能用,明理,能扩展 。
二 编码表
1 编码的定义
编码:值和符号的映射关联集合
2 ASCII表
说到编码表,大家可能有点陌生,但是其实我们学习过编码表,在c语言中的ASCII表就是一个编码表。是美国人搞的他们文字编码表(0~127),是(char整型)在内存中的整型值。
3 string类
string是STL里的容器,只是我们在https://legacy.cplusplus.com/reference/(cpluspius)中找不到string,为什么?
因为string产生的比STL早,先设计的string。就是这
4 变长编码集
对汉字使用的示例:
int main()
{
char buff1[] = "abcA";
buff1[0]++;
char buff2[] = "比特abc";
cout << sizeof(buff2) << endl;
buff2[1]++;
cout << buff2 << endl;
buff2[1]++;
cout << buff2 << endl;
buff2[3]++;
cout << buff2 << endl;
buff2[3]++;
cout << buff2 << endl;
return 0;
}
运行结果为: