STL黑马程序员观后感(自用总结)(一)

STL的诞生(标准模板库)

(1)软件界希望有可重复利用的东西
(2)面向对象和泛型编程都是为了提高复用性
(3)为了建立数据结构和算法的一套标准所以诞生了STL

STL组成部分

STL广义上分为哦:容器、算法、迭代器
容器和算法通过迭代器进行连接。
STL几乎所有的代码都采用了模板类或者模板函数。

STL六大组件

分别为容器、算法、迭代器、仿函数、适配器、空间配置器。
1.容器:各种数据结构,vector、list、deque、set\map等
2.算法:常用的算法,比如排序算法、查找算法等。
3.迭代器:容器和算法之间的胶合剂
4.仿函数:行为类似函数,可作为算法的某种策略
5.适配器(配接器):修饰容器、仿函数或者迭代器接口的东西
6.空间配置器:负责空间的配置与管理

容器

STL容器就是将运用广泛的一些数据结构实现出来,常用的数据结构有:数组、链表、树、栈、队列、集合、映射等。
容器分为序列式容器和关联式容器。
**序列式容器:**强调排序,容器内的每个元素都有固定的位置。
**关联式容器:**二叉树结构,个元素之间没有严格的物理顺序关系。
eg:
1,3,5,4,6
依次放入序列式容器顺序还是1,3,5,4,6
放入关联式容器可能就是:1,2,4,5,6
在放入关联式容器时会自动进行一个排序。

算法

算法有质变算法和非质变算法。
**质变算法:**运算过程中会更改区间内的元素内容,例如拷贝、删除、替换等。例如数组1,2,3变成了数组1, 4 ,5
**非质变算法:**运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等。

迭代器

算法通过迭代器才能访问容器中的元素。
迭代器可以提供一种方法,使算法既能够访问某个容器中的元素而又不用暴露容器的内部表示方式。
每个容器都有自己专属的迭代器。
迭代器使用类似于指针,初学者可以理解为指针。
迭代器分类:
具体分类如下图所示:
在这里插入图片描述
常用的迭代器为双向迭代器和随机访问迭代器。

猜你喜欢

转载自blog.csdn.net/weixin_45866980/article/details/126208319