c++实现STL标准库和算法

【实验楼学习笔记】

STL的原名是“Standard Template Library”,翻译过来就是标准模板库。STL 是 C++ 标准库的一个重要组成部分,STL 实现了常用的数据结构和算法 ,蕴含其间的泛型编程和代码复用的思想深刻的影响了编程习惯,像微积分延长天文学家寿命一样,STL延长了程序员的寿命。 STL 由算法,容器,迭代器,适配器,仿函数(函数对象),空间适配器六大部件组成 。

鱼缸是容器,瓶子是容器,饭碗也是容器,STL 的容器也不列外。这里的容器首先是一个模板类,在类中实现对数据的操作,而包含这样的类的实现就叫一个容器。STL 有许多这样的容器,它们包括:向量(vector),列表(list),队列(queue),双端队列(deque),优先队列(Priority queue),集合(set),多种集合(multiset),映射(map),多重映射(multimap)。

适配器
学习过数据结构的同学大都知道,数据结构不是独立的,部分数据结构是可以相互转换的。比如栈和队列可以互相实现。当我们需要一个碗的时候我们不一定重新制造,我们可以把瓶子的上部去掉。同样的道理,当我们需要队列(queue)的时候,也可以用双端队列(deque)去实现。而queue就叫做适配器。STL有三种基本容器vector,deque,list。有用基本容器扩展的适配器queue,stack等。适配器主要有容器适配器,迭代器适配器,函数适配器,它们的作用范围不同,意思大致一致。后面我们也会详细讲到。

仿函数
又叫做函数对象,其本质是类的对象,一种可回调机制,在类中重载了()运算符,使对象在用()时呈现出函数的特性,所以叫做仿函数。叫仿函数体现了它的作用,叫函数对象体现其本质,大家喜欢叫什么都可以。而为什么需要仿函数呢?因为STL没有也不可能将所有东西都包含到函数中,而程序是对现实的模拟,现实又是最复杂的,一个sort(),你要 < ,我要 > 。如何协调呢?我们可以定义自己需要的仿函数,定制自己的操作。具体的内容我们后面会讲。这儿只做说明。

空间配置器
c++ 的一大魅力就是对底层的操作,你像一个魔法师一样,挥舞着魔杖操纵着底层的各种资源。当然一个不好,程序也崩给你看。而空间配置器就是 STL 自己的“内存池”。完成对内存的申请,释放,维护。配置器有两个部分:一级空间配置器,二级空间配置器。本次课程不会过度讲解配置器,感兴趣的同学可以去看一下实验楼另外一个课程:c++ 实现高性能内存池。

你可能感兴趣的:(c++实现STL标准库和算法)