STL概述

来源:互联网 发布:人肉软件是什么 编辑:程序博客网 时间:2024/06/08 14:42

泛型程序设计(程序的通用性)

 

Stl =抽象出(算法+数据结构)以实现通用,是一套可拓展的框架

 

     Stl中的六大组件:

1.       容器(数据结构)

2.       算法

3.       迭代器

4.       函数对象(仿函数)(用于扩展)

5.       分配器(用于扩展)

6.       适配器

1.     容器:

 

序列式容器:

Vector(可变长数组)

           数组有序,支持随机访问时间复杂度O1一步到位

           Vector实际不可变长,当预先分配的空间不足时,会再分配更大的空间,然后把原有的值复制进去。(一维数组

 

List(列表)

           大部分为双向列表,随机访问速度On,插入删除速度O1

           设计形式可能不同

 

Deque(双端队列)

           包含有一个Map中控器,每一个map中的键值对,值都指向一块连续的空间。

           (涉及2级指针)两端插入速度O1,随机访问速度O2+

 

 

关联式容器(通过红黑二叉树实现):

           (红黑树:通过旋转,实现自动左右平衡)运用二分法,便于随机查找

           随机访问的次一级选择

Set(通过序列号,随机访问元素)

Map(通过key,随机访问value

Multiset(序号能重复)

Multimapkey能重复)

容器中的数据经过红黑树的重新排序。

 

2.     适配器(改变对应接口的组件):

适配器,STL中扮演着转换器的角色,本质上是一种设计模式,用于一种接口转换成另一种接口,从而使原本不兼容的接口能够很好地一起运作。

即添加或屏蔽原有组件中的一些功能。

 

改变容器的接口,称为容器适配器

           栈 stark

           队列queue

           优先队列

 

改变迭代器的接口,称为迭代器适配器

        反向迭代器

           插入迭代器

           IO迭代器

 

改变仿函数的接口,称为仿函数适配器

        函数对象适配器

           成员函数迭代器

           普通函数迭代器

 

3.     算法(algorithm):

在算法头文件中,可以作用于任何一个容器中

4.     迭代器

用于连接容器与算法,是一个统一的接口。

5.     函数对象

6.     分配器

原创粉丝点击