目录
前两天将STL中的容器讲解完毕了,今天将STL中剩下的算法、迭代器、仿函数、适配器、空间配置器。
1.算法
1.1质变算法
指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除等等
1.2非质变算法
是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等
2.迭代器
2.1输入迭代器
只能从容器中读取元素,不能修改和删除元素,支持++运算符和*运算符,例如istream_iterator。
2.2输出迭代器
只能向容器中写入元素,不能读取元素,支持++运算符和*运算符,例如ostream_iterator。
2.3向前迭代器
能够向前遍历容器中的元素,支持读取、修改和删除元素,支持++运算符和*运算符,例如list的迭代器。
2.4双向迭代器
能够向前和向后遍历容器中的元素,支持读取、修改和删除元素,支持++和--运算符和*运算符,例如deque的迭代器。
2.5随机访问迭代器
能够随机访问容器中的元素,支持读取、修改和删除元素,支持+、-、+=、-=、<、<=、>、>=、[]、*运算符,例如vector的迭代器。
3.仿函数
3.1简介
仿函数(Functor)是一种重载了函数调用运算符()的类对象,它能够像函数一样被调用,并可以作为算法的参数传递。STL中的很多算法都需要一个函数对象作为参数,例如sort、find_if、count_if等,这些函数对象就是仿函数。
3.2一元仿函数
只接受一个参数的仿函数,例如negate、logical_not等。
3.3二元仿函数
接受两个参数的仿函数,例如plus、minus、multiplies等。
3.4关系仿函数
用于比较两个值的仿函数,例如less、greater等。
3.5逻辑仿函数
用于逻辑运算的仿函数,例如logical_and、logical_or等。
3.6指针仿函数
用于指针运算的仿函数,例如mem_fun、mem_fun_ref等。
4.适配器
4.1简介
适配器(Adapter)是一种提供了新的接口或者功能的类模板,它能够将一种容器或者迭代器转换成另一种容器或者迭代器,或者将一个函数对象转换成另一个函数对象。
4.2容器适配器
提供了新的容器类型,能够对原始容器进行包装、转换或者扩展,例如stack、queue、priority_queue等。
4.3迭代器适配器
提供了新的迭代器类型,能够对原始迭代器进行包装、转换或者扩展,例如reverse_iterator、insert_iterator、ostream_iterator等。
4.4函数适配器
提供了新的函数对象类型,能够对原始函数对象进行包装、转换或者扩展,例如bind、mem_fn、not1、not2等。
5.空间配置器
5.1简介
空间配置器(Allocator)是一种用于在堆上分配内存的类模板,它提供了一组标准的接口,能够在运行时动态地分配、释放和管理内存。STL中的容器和算法都使用了空间配置器,用于管理内部的内存分配和释放。
5.2对于STL中的容器
可以指定不同的空间配置器类型作为模板参数,从而实现对内存分配和释放的自定义控制。
5.3对于STL中的算法
可以指定不同的空间配置器类型作为参数,从而实现对算法内部的内存分配和释放的自定义控制。