C++之STL

STL

STL:(Standard Template Library)标准模板库,是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架
通俗的说,STL是对常见数据结构的封装,和一些通用的算法,即可以操作任意类型数据和任意数据结构的算法
具体来说,STL中包含了六大组件,即容器迭代器算法仿函数空间配置器配接器,下面是对六大容器的介绍

容器

容器:容器是管理数据的地方,它是STL的重要组成部分。
容器包含了序列式容器和关联式容器

序列式容器

1、string:字符串类型
2、vector:动态类型的顺序表
3、array:静态类型的顺序表(C++11)
4、list:带头结点的双向循环链表
5、forward_list:带头节点的单向循环链表(C++11)
6、deque:动态的二维数组

关联式容器

1、set:不重复元素的集合
2、multiset:类似set,但允许元素重复
3、map:关联数组,每个元素有两个数据项,map将一个数据项映射到另一个数据项中
4、multimap:类似map,但允许键值重复
5、unordered_set、unordered_multiset、unordered_map、unordered_multimap:分别类似集合、多重集合、映射、多重映射,但是用哈希表实现

其他类型容器

1、bitset
2、valarray

迭代器

迭代器是泛化的指针,通过迭代器,编程人员可以无需关心关心其内部结构而进行操作数据。根据它们操作方式的不同,可分为以下几种:
1、输入迭代器
2、输出迭代器
3、随机访问迭代器
4、前向迭代器
5、双向迭代器

算法

STL提供了一些通用类型的常见的算法,这些算法与数据类型和数据结构无关。例如排序和搜索算法,等等

仿函数

也称为函数对象。将一个类的对象按照函数的方式进行使用,它可以定制函数功能,使之更加灵活。例如greater、less,等等

配置器

也称为容器适配器。它是一种设计模式(设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结),该中模式是将一个类的接口转换为客户希望的另一个接口
常用的配置器有stack、queue、priority_queue(因为每个容器在底层都有自己的实现方式,但是这三个在底层只是将其他容器进行了封装),等等

空间配置器

空间配置器是STL中提供的申请释放以及管理空间的组件,最具代表的空间配置器是allocator

STL的缺陷

1、STL库更新慢
2、没有支持线程安全,并发环境下需要自己加锁,且锁的粒度是比较大的
3、STL极度的追求效率,导致内部比较复杂
4、在极端情况下,STL会导致内存膨胀的问题
5、深拷贝问题,极端情况下,如果是百万级的数据,那么一次深拷贝就产生了几百万次的构造和析构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值