首页 > 编程笔记 > C++笔记 > STL(标准模板库)
STL算法分类
在 STL 中,算法就是函数模板。STL 中的算法大多数是用来对容器进行操作的,如排序、 查找等。大部分算法都是在头文件 <algorithm> 中定义的,还有些算法用于数值处理,定义在头文件 <numeric> 中。
不同的教程对 STL 中的算法有不同的分类方法。本教程将算法分为以下七类:
本教程介绍前六类算法。第七类算法共有三个,除了前面已经介绍过的 accumulate 以外,另外两个算法既不常用,讲解起来又比较烦琐,本教程就不介绍了,有需要的读者可自行查阅相关资料。
有的算法可能同时属于多个分类。
许多算法都是重载的,有不止一个版本。篇幅所限,本教程往往只能列出其中的一个版本。有些算法也不给出原型,直接通过程序来演示其用法。
实际上,大多数重载的算法都有两个版本,其中一个用
类似 sort 和 min_element 这样有可自定义比较器版本的算法,在后文的表格中列出时,将加注“(可自定义比较器)”。
不同的教程对 STL 中的算法有不同的分类方法。本教程将算法分为以下七类:
- 不变序列算法。
- 变值算法。
- 删除算法。
- 变序算法。
- 排序算法。
- 有序区间算法。
- 数值算法。
本教程介绍前六类算法。第七类算法共有三个,除了前面已经介绍过的 accumulate 以外,另外两个算法既不常用,讲解起来又比较烦琐,本教程就不介绍了,有需要的读者可自行查阅相关资料。
有的算法可能同时属于多个分类。
许多算法都是重载的,有不止一个版本。篇幅所限,本教程往往只能列出其中的一个版本。有些算法也不给出原型,直接通过程序来演示其用法。
实际上,大多数重载的算法都有两个版本,其中一个用
==
判断元素是否相等,或用<
比较大小;而另一个版本多出来一个类型参数 Pred 以及函数形参 Pred op,该版本通过表达式op(x, y)
的返回值是 true 还是 false 来判断 x 是否“等于”y 或者“小于”y。例如,在《C++函数对象详解》一节中的“应用实例2”中提到的 sort,再如下面有两个版本的 min_element:
iterate min_element(iterate first, iterate last);
iterate min_element(iterate first, iterate last, Pred op);
<
比较大小,而第二个版本用自定义的比较器 op 来比较大小,op(x, y) 的值为 true,则说明 x 比 y 小。类似 sort 和 min_element 这样有可自定义比较器版本的算法,在后文的表格中列出时,将加注“(可自定义比较器)”。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算