STL(Standard TemplateLibrary),即标准模板库,从根本上说,STL是一些“容器”的集合,这些“容器”有list、vector、set、map等,STL也是算法和其他一些组件的集合。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。
STL包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic programming)。在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。
Vector
,Deque
,List
,Set
,Map
,用来存放数据,STL容器是一种Class Template,就体积而言,这一部分很像冰山载海面的比率。Sort
,Search
,Copy
,Erase
,从实现的角度来看,STL算法是一种Function Templates。Operators*
,Operator->
,Operator++
,Operator–
等相关操作予以重载的Class Template。**所有STL容器都附带有自己专属的迭代器**,只有容器设计者才知道如何遍历自己的元素,原生指针(Native pointer)也是一种迭代器。Queue
和Stack
,虽然看似容器,其实只能算是一种容器配接器,因为它们的底部完全借助Deque
,所有操作有底层的Deque供应。改变Functor接口者,称为**Function Adapter**;改变Container接口者,称为**Container Adapter**;改变Iterator接口者,称为**Iterator Adapter**。配接器的实现技术很难一言蔽之,必须逐一分析。关联容器和顺序容器的根本不同在于:关联容器中的元素是按关键字来保存和访问的,而顺序容器中的元素则是按它们在容器中的位置来顺序保存和访问的。
insert
成员函数与multiset中的有所不同T & operator[] (Key k);
该成员函数返回 first 值为 k 的元素的 second 部分的引用。如果容器中没有元素的 first 值等于 k,则自动添加一个 first 值为 k 的元素。如果该元素的 second 成员变量是一个对象,则用无参构造函数对其初始化。STL中的容器适配器有 stack、queue、priority_queue 三种。它们都是在顺序容器的基础上实现的,屏蔽了顺序容器的一部分功能,突出或增加了另外一些功能。
容器适配器都有以下三个成员函数:
参考:https://zhaoyang.blog.csdn.net/article/details/88769890http://c.biancheng.net/cplus/80/