C++_基本语法笔记_仿函数和算法接口

函数对象

概念和使用

  • 切记:仿函数,本质是一个类
  • 因为是一个类,所以要把operator() 放在一个类里面

在这里插入图片描述在这里插入图片描述

像普通函数(需要通过某个类使用)一样使用,并且有返回值:
在这里插入图片描述
内置当前函数对象的状态:
在这里插入图片描述
在这里插入图片描述

函数对象作为参数:
在这里插入图片描述

谓词

  • 返回值一定是bool型
    在这里插入图片描述
  • 返回值为bool的仿函数:
    在这里插入图片描述
  • 使用方法:可以在find_if这种期待 bool 值的地方使用
    在这里插入图片描述* 以后 看到Pred的形参,就是谓词(仿函数)

在这里插入图片描述

  • 二原谓词:可以放在排序中使用。这里MyCompare是匿名函数对象
    在这里插入图片描述在这里插入图片描述

内建函数对象

在这里插入图片描述

算数仿函数

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

关系仿函数

在这里插入图片描述在这里插入图片描述

逻辑仿函数

在这里插入图片描述
在这里插入图片描述

常用算法

在这里插入图片描述

遍历

for_each()
在这里插入图片描述
在这里插入图片描述

transform() 搬运一个容器到另一个
在这里插入图片描述 * 记得要使用resize()提前开辟空间

在这里插入图片描述
下面传入vTarget.begin,即开始迭代器在这里插入图片描述

查找

在这里插入图片描述

find

  • **切记:**返回值是:迭代器位置
    在这里插入图片描述
    在这里插入图片描述
  • 自定义类型:
  1. 在Person类中重载 == ,才能进行自定义类型比较
    在这里插入图片描述
  2. 传入要查找的自定义类型,返回值是迭代器
    在这里插入图片描述

find_if

  • 相比find可以自定义筛选条件
    在这里插入图片描述

  • 返回:迭代器

  • 使用谓词/仿函数

  • 内置类型的谓词:
    在这里插入图片描述

  • 自定义类型的谓词:传入类型是Person,
    在这里插入图片描述在这里插入图片描述

adjacent_find

查找相邻重复元素
在这里插入图片描述在这里插入图片描述

binary_search

二分查找
在这里插入图片描述

  • 内置类型:
    在这里插入图片描述

count

统计数据的个数
在这里插入图片描述

  • 内置类型:
    在这里插入图片描述
  • 自定义数据类型
    在这里插入图片描述自定义类型,要在Person类型中,添加重载==(下图中忘记添加const Person &p,防止改变原值)

在这里插入图片描述

count_if

  • 统计满足某个条件的个数

这种 " if ",都要写仿函数,返回bool值来判断

  • 仿函数:
    在这里插入图片描述
  • 自定义类型
    在这里插入图片描述在这里插入图片描述

排序

在这里插入图片描述

sort

  • 默认升序
    在这里插入图片描述这里用的greater,也就是期望前面大于后面
    在这里插入图片描述

random_shuffle

  • 指定范围调换次序
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

merge

  • 合并两个有序容器合并后也有序
    在这里插入图片描述

在这里插入图片描述

reverse

  • 反转指定范围

在这里插入图片描述
在这里插入图片描述

拷贝和替换

在这里插入图片描述

copy

在这里插入图片描述在这里插入图片描述

replace

在这里插入图片描述
在这里插入图片描述

replace_if

带有if的要写谓词
在这里插入图片描述

谓词:
在这里插入图片描述
在这里插入图片描述

swap

  • 互换两个容器内部的元素(两个容器类型相同,都是List或者都是Vector
  • 容器大小不同也可以交换
    在这里插入图片描述
    在这里插入图片描述

算数生成算法

在这里插入图片描述

accumulate

  • 自动求和

在这里插入图片描述

在这里插入图片描述

fill

  • 填充某个数值

在这里插入图片描述

在这里插入图片描述

集合算法

在这里插入图片描述

set_intersection

  • 必须有序容器

在这里插入图片描述

  • 开辟较小空间
  • 返回值是目标容器的End
  • 用目标End作为结束

在这里插入图片描述

set_union

在这里插入图片描述

在这里插入图片描述

set_difference

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值