STL是什么?
STL(Standard Template Libary):标准模板库,即C++标准库中的一部分(80%)。更准确的说是 C++ 程序设计语言标准模板库。STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给C++程序设计者的接口都是一样的。也就是说同一段STL代码在不同编译器和操作系统平台上运行的结果都是相同的,但是底层实现可以是不同的。 令人兴奋的是,STL的使用者并不需要了解它的底层实现。 试想一下,如果我们有一把能打开所有锁的钥匙,那将是多么令人疯狂啊。
STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什么。它被内建在你的编译器之内。
STL几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。
STL组成:
STL大致分为以下几个部分:
——容器(container)
——迭代器(iterator)
——容器适配器(Adapter)
——算法(algorithm)
——函数对象(functor)
——配置器(allocator) //底层实现
在 C++ 标准库中,STL被组织成以下13个头文件:
<algorithem>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>
就目前来说,我平时常用的组件是容器、迭代器、算法。
-
容器:顾名思义就是用来装东西的 -> 那么一个杯子(容器)想当然的应该有什么操作呢?
-
。装东西 -> 即让待存储元素进入容器
-
取东西 -> 即让待取出元素离开容器。
容器又分为:序列式容器和关联式容器
-
序列式容器:即内部元素按照进入顺序和存放的位置进行排序。
-
关联式容器:容器已经有规则,进入容器的元素的位置不是由时机和地点决定的。(老师给排座位,
排到哪坐哪)
-
-
-
迭代器:类似于指针的作用,因为其因为容器存在而存在的,所以我们可以将其想成炸油条的筷子。因为油锅
(容器)中不能直接用手拿,所以才需要迭代器,我们用它指着油条可以数数,用它夹油条可以移动 油条。
实际上迭代器是一个类,这个类封装一个指针。
并且迭代器是容器和算法之间的桥梁,其中容器负责提供迭代器,算法使用容器提供的迭代器。
-
算法:就是对容器及容器内某些操作的步骤,例如我们说操作,夹油条就算一个操作,算是一个基本操作。而
夹出所有熟了的油条则需要我们的大脑做出一系列步骤——依次夹起油条,判断其是否熟了,若熟了我 们就夹出,否则就放回。这具体的步骤就是一个算法(或者说依据算法构成的程序)。
STL提供了大约100个实现算法的模板函数。
概述部分结束,下面是目录:
参考文档:https://www.cnblogs.com/ACMan/archive/2012/05/30/2526927.html
https://blog.csdn.net/rl529014/article/details/51154798