STL六大组件 功能与运用(略写)

1.容器:
各种数据结构:如vector list deque set map,用来存放数据
容器类是容纳、包含一组对象或对象集的对象,通过容器类提供的成员函数可以实现对序列元素的各种操作。

什么是容器?
百度百科:容器是指用以容纳物料并以壳体为主的基本装置。常用作储存设备或其他化工设备的外壳。在C++中,STL提供了大量的容器类。容器类的对象可以认为是“容器”。

容器的种类:
STL容器通常分为三种:序列式容器、关联式容器、容器适配器,(其中容器适配器不能算为真正意义上的容器,严格意义上算为容器的使用类,它是在容器的基础上发展起来的)

  • 序列式容器
string类似动态顺序表
vector动态数组类型的顺序表
array(C++11)静态数组
list带头节点的双向链表
forward_list带头节点的单链表
deque双端对列,类似于二维数组

序列式容器最主要的特点是可以在首端删除元素,在末尾可以插入元素

  • 关联式容器

底层为红黑树:

map保存<key , value>键值对,key唯一
set保存 key , key唯一
multimap保存<key , value>, key不唯一
multiset保存 key, key不唯一

因为底层为红黑树:所以其遍历是关于 key 有序,查找的时间复杂度为O(log2^N)

底层为哈希结构:

unordered_map保存<key , value>键值对,key唯一
unordered_set保存 key , key唯一
unordered_multimap保存<key , value>, key不唯一
unordered_multiset保存 key, key不唯一

因为底层为哈希结构:查找的时间复杂度为O(1),用空间换时间。

容器适配器

stack
queue队列
priority_queue优先级对列

2.算法
常用的算法有sort search copy erase

3.迭代器
将容器与算法连接起来,也就是所谓的“泛型指针”,常见的迭代器有5中类型,(基本上都是指针相应的一些操作)。operator -> ,operator* , operator++ ,operator-- 等指针相关的操作重载,原生态的指针也算是迭代器(vector的迭代器就为原生态的指针)。

4.仿函数
类似与函数的类,仿函数基本上可以看作是将operator()的操作进行了重载。

5.容器适配器

6.配置器
负责空间的配置与管理,配置器实现了动态空间的配置,管理,释放。

STL六大组件的交互关系
容器通过空间适配器来获取空间,算法通过迭代器存取容器中的内容,仿函数协助算法完成一些操作,容器适配器修饰仿函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值