C++ 标准模板库STL(一)——STL基本概念

一、什么是标准模板库STL

C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。

二、STL用来干嘛

简单粗俗地来说,就是用来偷懒的。STL为我们提供了很多已经定义好了的函数,在实现某些功能的时候,我们只需要调用相应的函数就行了,而不用手动去实现所需功能的一系列细节操作。

三、STL六大组件

组件含义
容器容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等,用来存放数据
算法STL 提供了非常多(大约 100 个)的数据结构算法,它们都被设计成一个个的模板函数,这些算法在 std 命名空间中定义,其中大部分算法都包含在头文件 中,少部分位于头文件 中。算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器在C++STL 中,对容器中数据的读和写,是通过迭代器完成的,扮演着容器和算法之间的胶合剂。容器和算法之间的桥梁
函数对象如果一个类将 () 运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象(又称仿函数)。
适配器可以使一个类的接口(模板的参数)适配成用户指定的形式,从而让原本不能在一起工作的两个类工作在一起。容器、迭代器和函数都有适配器。
内存分配器为容器类模板提供自定义的内存申请和释放功能,由于往往只有高级用户才有改变内存分配策略的需求,因此内存分配器对于一般用户来说,并不常用。

四、容器

(一)容器的定义

容器是用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在 STL中都被实现为容器。

(二)容器的分类

大分类小分类特点功能
序列容器/强调元素的位置,序列式容器中每个元素都有固定的位置,和元素值无关主要包括 vector 向量容器、list 列表容器以及 deque 双端队列容器
关联容器排序容器排序容器中的元素默认是由小到大排序好的,新插入元素,元素也会插入到适当位置包括 set 集合容器、multiset多重集合容器、map映射容器以及 multimap 多重映射容器
哈希容器哈希容器中的元素是未排序的,元素的位置由哈希函数确定C++ 11 新加入 4 种关联式容器,分别是 unordered_set 哈希集合、unordered_multiset 哈希多重集合、unordered_map 哈希映射以及 unordered_multimap 哈希多重映射

五、算法

(一)算法的定义

通过有限的步骤解决问题的方法

(二)算法的分类

分类特点
质变算法在运算的过程中,会改变区间内元素的内容。例如:替换、删除
非质变算法在运算的过程中,不会改变区间内元素的内容。例如:查询、技术

六、迭代器

(一)迭代器的定义及作用

用来遍历容器中的元素

注意:每种容器都有自己所对应的迭代器

(二)迭代器的分类

分类功能支持运算
输入迭代器对数据的只读访问++、==、!=
输出迭代器对数据的只写访问++
前向迭代器对数据可以进行读写操作,向前推进++、==、!=
双向迭代器对数据可以进行读写操作,向前或后推进++、–
随机访问迭代器对数据可以进行读写操作,可以访问任意位置的数据++、–、[n]、-n、<、<=、>、>=

参考资料:

https://www.runoob.com/cplusplus/cpp-stl-tutorial.html

http://c.biancheng.net/stl/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值