C++标准模板库STL(泛型库)

STL包含了哪些内容?基本组成有哪些?

目录

前言

基本组成

1.六大组件

2.十三个头文件

总结


前言

STL是C++中的标准模板库,是容器、算法和一些其他组件的集合。也是我们学习数据结构时必不可少的工具,下面就让我们来大致了解一下STL的基本组成有哪些。


基本组成

1.六大组件

6大组件:容器(序列式容器、适配器容器和关联式容器)、算法、迭代器、函数对象、适配器、内存分配器。

1.容器

序列式容器(顺序容器):实现按顺序访问的数据结构

向量(vector) 连续存储的元素(动态的相接数组)。

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

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

适配器容器:提供顺序容器的不同接口

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

队列(queue) 先进先出的值的排列。

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

关联式容器:实现能快速查找的数据结构。

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

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

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

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

C++11新增:

两个序列容器:array:静态的相接数组,forward_list:单链表。

无序关联容器:无序关联容器提供能快速查找的无序(哈希)数据结构。

无序集合(unordered_set):唯一键的集合,按照键生成散列。

无序映射(unordered_map):键值对的集合,按照键生成散列,键是唯一的

无序多重集合(unordered_multiset):键的集合,按照键生成散列

无序多重映射(unordered_multimap):键值对的集合,按照键生成散列。

2.算法

        数据结构算法,被设计成了模板函数,在 std 命名空间中定义,大部分算法包含在头文件 <algorithm> ,少部分位于头文件 <numeric> 中。

3.迭代器

        完成对容器中数据的读和写,功能行为类似与指针,其中重载了一些运算符便于读、写容器中的数据。迭代器共有五 (C++17 前)六 (C++17 起)种:输入迭代器 (LegacyInputIterator) 、输出迭代器 (LegacyOutputIterator) 、向前迭代器 (LegacyForwardIterator) 、双向迭代器 (LegacyBidirectionalIterator) 、随机访问迭代器 (LegacyRandomAccessIterator) ,及相接迭代器 (LegacyContiguousIterator) (C++17 起)。

4.函数对象

        如果一个类将 () 运算符重载为成员函数,这个类就是函数对象类,类对象就是函数对象(又叫仿函数)。

5.适配器

        让一个类的接口(模板参数)适配成用户指定的形式,让原本不能一起工作的两个类一起工作。容器、迭代器和函数都有适配器。

6.内存分配器

        为容器类模板提供自定义的内存申请和释放功能。

2.十三个头文件

使用模板库中的容器或组件需引入头文件。

13个头文件:<iterator><functional>(函数对象库的一部分,并提供标准的哈希函数)
<vector><deque><list><queue><stack><set><map><algorithm><numeric>
<memory>(动态内存管理库的一部分)
<utility>(utility头文件定义重载的关系运算符,简化关系运算符的写入)


总结

        以上就是我目前对STL的大致理解,之后可能还会有修改扩充,如果有什么理解错误的地方大家可以指出,我会及时修正(ノ*・ω・)ノ

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值