- 使用
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是什么
- 赛纳是什么
