编程习惯决定了你的代码质量和代码的效率,例如你在程序开发中,当你用到排序算法,你是不是第一反应就是自己去编写排序算法,而排序算法有那么多种,你甚至不会考虑那么多就来一个冒泡排序算法解决,完事了~~,这种编程习惯只能说还是太年轻了。
为了解决这些问题,C++提供了标准库(Standard Template Library,STL)供我们使用,使得我们可以把更多的精力放在更加重要的功能开发上面,并且可以提升我们的代码质量,方便后期的维护,不得不说,C++的STL真的很伟大呀。
路人甲:那你会问STL里面包含了哪些内容呢?
Serven:这个问题问得好。下面就让小编来详细解开STL的面纱,让我们以后在开发过程中更加的顺风顺水。
STL的构成
STL就是一些常用的数据结构和算法模板的集合。
从广义上讲分为三类:分别包含了容器、算法、迭代器
详细的说是分为六部分:除了包含容器、算法、迭代器,还包含了仿函数、适配器、空间配制器
容器(Container):是一种数据结构,包括了vector、list、deques、map、set、multimap、multiset、unordered_map、unordered_set,这是以模板的形式提供,为了访问容器中的数据,可以使用容器类输出的迭代器。
算法(Algorithm):用来操作容器中的数据的模板函数。例如:STL中的sort()是来对一个vector中的数据进行排序,find()是来对搜索一个list中的对象,函数本身与他们操作的数据的结构和类型无关,因此他们可以用于从简单数组高度复杂的容器类似于指针的操作符方法的类对象;
迭代器(Iterator):提供了访问容器中对象的方法。例如:可以使用一对迭代器制定list或vector中的一定范围的对象,它相当于一个指针;
仿函数(Function object):仿函数又称之为函数对象, 其实就是重载了操作符的struct,没有什么特别的地方。
适配器(Adaptor):简单地说就是一种接口类,专门用来修改现有类的接口,提供一种新的接口;或调用现有的函数来实现所需要的功能。主要包括3种适配器Container Adaptor、Iterator Adaptor、Function Adaptor。
空间配制器(Allocator):为STL提供空间配置的系统。其中主要工作包括两部分:
(1)对象的创建与销毁;
(2)内存的获取与释放。