2019年是我第一次参加蓝桥杯比赛。
在2019年的蓝桥杯中,我选择了C/C++B组的比赛。
在C++组的比赛中,STL是被允许使用的。而且在一些时候可以简化代码长度,提高代码效率。但在之前的学习中,我们并没有对STL有什么接触,因此专门抽出一段时间对STL进行学习。
由于本次是专门针对蓝桥杯对STL进行学习,因此在很多方面对STL不会进行深入的研究,只会要求在比赛中能够在API文档的帮助下可以熟练使用即可。
STL简述
- STL是一个具有工业强度的,高效的C++程序库
- 她实现了诸多在计算机科学领域内常用的基本数据结构和基本算法
- STL主要包括了容器、算法、迭代器
1.容器
是容纳、包含相同类型元素的对象,主要用类模板实现
序列型容器:容器中的元素按照线性结构组织起来,可以逐个读写元素。主要包括vector(向量)、deque(双端队列)、list(双向链表)。
关联型容器:通过键(key)存储和读取元素。主要有map(映射)、set(集合)等。
容器适配器:是对前面提到的某些容器进行再包装,使其变成另一种容器。主要的有stack(栈)、queue(队列)等。
2.迭代器
是用于确定元素位置的数据类型,可以用来遍历容器中的元素
通过迭代器可以读取、修改它指向的元素,它的用法和指针类似。
每一种容器都定义了一种迭代器
定义一个容器类的迭代器的方法可以是
容器类名<元素类型>::iterator 变量名
vector::iterator it;
访问一个迭代器指向的元素:
*迭代器变量名
*it=5;
3.算法
由许多函数模板组合成的集合,实现了大量的通用算法,用于操纵各种容器
STL中提供的算法涉及到:比较、交换、查找、遍历、复制、修改、移除、反转、排序、合并等。大约有70中标准算法
算法通过迭代器来操纵容器中的元素
算法可以处理容器,也可以处理C语言数组