STL

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

 

1STL定义

       STL标准模板库惠普实验室开发的一系列软件的统称。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,被内建在你的编译系统之内。

2STL头文件

       在C++标准中,STL被组织为下面的17个头文件:<algorithm>、<deque>、<functional>、<iterator>、<array>、<vector>、<list>、<forward_list>、<map>、<unordered_map>、<memory>、<numeric>、<queue>、<set>、<unordered_set>、<stack>、<utility>。

3、组成部分:

       STL可分为容器、迭代器、空间配置器、配接器、算法、仿函数六个部分

容器部分主要由头文件<vector>、<list>、<deque>、<set>、<map>、<stack>以及<queue>组成。

   序列式容器

      向量(vector)连续存储的元素<vector>

      列表(list)由节点组成的双向链表,每个结点包含着一个元素<list>

      双端队列(deque)连续存储的指向不同元素的指针所组成的数组<deque>

   容器适配器

     栈(stack)后进先出的值的排列 <stack>

     队列(queue)先进先出的值的排列 <queue>

     优先队列(priority_queue)元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>

  关联式容器

     集合(set)由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能  够拥有相同的次序 <set>

    多重集合(multiset)允许存在两个次序相等的元素的集合 <set>

    映射(map){键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>

    多重映射(multimap)允许键对有相等的次序的映射 <map>

 

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.     分配器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淮城一只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值