STL是标准的C++库,容器时其中的一个重要组成部分。在实现容器时主要提供了顺序容器和关联容器。STL为容器的遍历提供了迭代器。STL也提供了100多种算法的实现。这些算法包括排序,遍历等等。
什么是容器?
容器时容纳特定类型对象的集合,因此容器中的对象必须是统一的类型,而且该类型必须是可拷贝构造和赋值的,所以包括的类型有内置的基本数据类型和带有公用拷贝构造函数和赋值操作符的类。STL中提供的容器有vector,list,deque,set,multiset,map,multimap等。
在STL中,容器一般用模板类来实现。不过STL并没有采用面向对象的技术,所以在STL中并没有一个通用的容器类,各种具体的容器也没有统一的基类。
容器可以视为是数组的扩展,即对象的数组(广义数组),其中的元素(对象)通过容器对“[]”的重载,可以喝数组一样利用下标(索引)来访问。
在STL中提供了两种类型的容器:顺序容器和关联容器。这两种分类下面是各种具体的容器:
一:顺序容器,指的是将一组具有相同类型T的对象,以严格的线性形式组织在一起。顺序由容器可以是为数组和链表的推广。包括有以下三种顺序容器:。
a.vector<T>
b.deque<T>
c.list<T>
二:关联容器,提供一个key(键)实现对元素的随机访问,其特点是key是有序的,即元素是按预定义的键顺序插入的。关联容器具有从基于键的集合中快速提取对象的能力,其中集合的大小在运行时是可变的。关联容器可以视为关联数组,映射或字典的推广,他们保存的都是键值对,给定了其中的一个被称为键(key)的值,就可以快速访问与其对应的另一个值的值。STL中的额管理容器有以下四种。
a.set(Key)(集合):支持唯一键值,并提供对键本身的快速搜索;
b.multiset(Key)(多重集合):支持可重复键值,并提供对键本身的快速检索。
c.map(Key,T)支持唯一Key类型的键值, 并提供对另一个基于键的类型T的快速检索。
d.multimap(Key,T)(多重映射):支持可重复Key类型的键值,并提供对另一个基于键的类型T的快速检索。