- 使用
for_each
算法。STL
提供了大量算法,使用时需要包含<algorithm>
头文件 。
//重新指向容器的开始位置(因为前面的操作移动过迭代器)begin=nums.begin();//使用 for_each 算法组件for_each(begin,end,Zs<int>());
- 输出结果 。

文章插图
STL
使用了高内聚、低耦合的设计理念,各组件的专业能力非常强,合作时又能做到严丝合缝、润物细无声 。容器
专注于数据的存储 。迭代器
专注于容器的访问 。函数对象
提供具体的算法策略 。算法
相当于发动机,提供聚合动力 。
STL
的核心(无数据无程序)组件,且类型繁多,下文将简要介绍容器的共性操作 。2. 容器
STL
中的容器和数组相似,能够存储数据集,但有其自身的特点:- 支持容量的自动增长 。当添加数据时,如果容量不够时,容器会自动分配新的内存 。
- 容器可以迭代 。
- 支持数据类型参数(泛型编程) 。
STL
中的容器众多,有点乱入花丛渐迷眼的既视感 。一般会按照存储方式对其进行分类:- 序列式容器:数据以添加时的顺序进行存储,当然可以对数据排序 。
- 关联式容器:数据由
键
和值
两部分组成 。
2
种:- 连续(线性)存储:基于数组的存储方式,数据与数据在内存中是相邻的 。

文章插图
- 链式(非线性)存储:以节点的方式非线性存储 。数据与数据在内存中并不一定相邻,结点之间通过存储彼此的地址知道对方的位置 。

文章插图
STL
中常用到的序列式容器对象:vector
:向量,线性存储,类似于数组 。需要包含<vector>
头文件 。list
:双向链表,非线性存储 。需要包含<list>
头文件 。slist
:单向链表,非线性存储 。需要包含<slit>
头文件 。deque
:双向队列 。需要包含<deque>
头文件 。- stack:栈,先进后出 。需要包含
<stack>
头文件 。 queue
:队列,数据先进先出 。需要包含<queue>
头文件 。priority_queue
:优先级队列 。需要包含<queue>
头文件 。
2
种存储方案:- 使用搜索二叉树:容器中的元素依照键值进行排序 。
STL
是用红黑树实现关联容器,红黑树是一种查找效率很高的平衡搜索二叉树 。

文章插图
- 使用哈希表:对键值进行哈希算法,然后根据哈希值把数据存储在不同的单元中 。

文章插图
STL
中常用的关联容器:set
:集合 。包含头文件<set>
。map
:映射 。包含头文件<map>
。multiset
:可重复集合 。包含头文件<set>
。- 【C++】从零开始的CS:GO逆向分析2——配置GLFW+IMGUI环境并创建透明窗口
- C++自学笔记 Composition:对象组合
- 会计核算概述是什么?
- 查账的概述是什么?
- 为什么网上买不到EffectiveSTL这本书呢
- 计算机语言有哪些
- 车内阅读灯是什么
- 奔驰R级是什么
- 蓝旗亚Thesis是什么
- 赛纳是什么