1 函数对象
1.1 本质是一个类的对象,因此称为函数对象,也叫仿函数
1.2 函数对象 超出了普通函数的概念,可以拥有自己状态
1.3 函数对象可以作为函数参数
2 谓词
2.1 普通函数或者仿函数的返回值是bool类型,称为谓词
2.2 一元谓词
2.2.1 查找容器中大于20的数字 find_if
2.3 二元谓词
2.3.1 对容器进行排序 sort
2.4 lambda表达式 [](){}
3 内建函数对象
3.1 引入头文件 #include< functional>
3.2 取反 negate<int>
3.3 加法 plus<int>
3.4 大于 greater<int>
4 适配器
4.1 函数对象适配器
4.1.1 //1、利用bind2nd 进行绑定
4.1.2 //2、继承 public binary_function<参数1 类型,参数2类型,返回值类型>
4.1.3 //3、加const
4.2 取反适配器
4.2.1 一元取反 not1
4.2.1.1 //1、利用not1进行取反
4.2.1.2 //2、继承 public unary_function<int,bool>
4.2.1.3 //3、加const
4.2.2 二元取反 not2
4.3 函数指针适配器
4.3.1 ptr_fun将普通函数指针 适配成函数对象
4.4 成员函数适配器
4.4.1 如果存放的是对象实体 mem_fun_ref
4.4.2 如果存放的是对象指针 mem_fun
5 常用遍历算法
5.1 for_each
5.1.1 用于遍历
5.1.2 有返回值
5.1.3 可以绑定参数进行输出
5.2 transform
5.2.1 搬运
5.2.2 注意:目标容器要有容量
6 常用查找算法
6.1 find 查找
6.2 find_if 按条件查找
6.3 adjacent_find算法 查找相邻重复元素
6.4 binary_search算法 二分查找法
6.4.1 注意: 在无序序列中不可用
6.5 count算法 统计元素出现次数
6.6 count_if 按条件进行统计
7 常用排序算法
7.1 merge 合并
7.1.1 将两个容器合并到 目标容器中
7.1.2 注意: 两个容器必须是有序序列
7.1.3 目标容器必须有容量
7.2 sort 排序
7.3 random_shuffle 洗牌
7.4 reverse 反转
8 常用的拷贝和替换算法
8.1 copy 拷贝
8.1.1 实现打印 copy(v.begin(),v.end() , ostream_iterator<int>(cout , “ ”));
8.2 replace 替换
8.3 replace_if 按条件替换
8.4 swap 交换
9 常用的算数生成算法
9.1 头文件 #include <numeric>
9.2 accumulate算法 计算容器元素累计总和
9.3 fill算法 向容器中添加元素
10 常用集合算法
10.1 set_intersection算法 求两个set集合的交集
10.2 set_union算法 求两个set集合的并集
10.3 set_difference算法 求两个set集合的差集
10.4 注意:两个集合必须是有序序列
11