STL中的容器

来源:互联网 发布:丰田suv知乎 编辑:程序博客网 时间:2024/05/16 01:36
STL中的容器:容器一般用模板类来实现。不过STL并没有采用面向对象的技术,所以在STL中并没有一个通用的容器类,各种具体的容器也没有统一的基类。
    1. STL中的容器分为两种:顺序容器 和 关联容器
      1. 顺序容器:将一组具有相同类型T的对象,以严格的线性组织在一起。顺序容器可以视为数组和链表的推广。
        1. 例如:vector<T>、 deque<T>、 list <T>
      2. 关联容器:提供一个key(键)实现对元素的随机访问,其特点是key是有序的,即元素是按预定义的键顺序(例如升序)插入的。关联容器具有从基于键的集合中快速提取对象的能力,其中集合的大小在运行时是可变的。关联容器可以视为关联数组、映射或者字典的推广,他们保存的都是键值对,给定了其中的一个称为键的值,就可以快速访问与其对应的另一个值的值。主要有以下4种:
        1. set<Key> (集合):支持唯一键值,并提供对键本身的快速检索;例如 set<long>:{学号}(set类的头文件<set>)
        2. multiset<Key> (多重集合):支持可重复键值,并提供对键本身的快速检索;例如 ste<string>:{姓名}(可能有同名的)(multiset类的头文件<set>)
        3. map<Key,T>:支持唯一Key类型的键值,并提供对另一个基于键的类型T的快速检索;例如map<long,string>:{(学号,姓名)}、{(电话号码,姓名)}等。map类的头文件<map>
        4. multimap<Key,T> (多重映射):支持可重复Key类型的键值,并提供对另一个基于键的类型T的快速检索;例如map<string,string>:{(姓名,地址)}、{(姓名,年龄)}等。multimap类的头文件<map>
      3. 容器适配器:(容器适配器不是独立的容器)只能是某种容器的变种,它提供原容器的一个专用的受限接口。特别是,容器适配器和普通容器的不一样是在于不提供迭代器。(再STL中有3种容器适配器):
        1. stack<T> (栈):只支持top()、push()、pop()。
        2. queue<T> (队列) 
        3. priority_queue<T> (优先队列):也是一种队列queue,不过其中的每个元素都被给定了一个优先级,用来控制元素到达队首top()的顺序。默认情况下,优先队列简单地使用运算符<进行元素比较,top()返回最大的元素。
          1. 优先队列,并不要求其全部元素都是有序的,而只要求其第一个元素是最大的。
0 0