C++中find_if查找vector中的特定struct以及值域查询

C++中find_if查找vector中的特定struct以及值域查询

博客搬家,原地址:https://langzi989.github.io/2017/07/15/C++%E4%B8%ADfind_if%E6%9F%A5%E6%89%BEvector%E4%B8%AD%E7%9A%84%E7%89%B9%E5%AE%9Astruct%E4%BB%A5%E5%8F%8A%E5%80%BC%E5%9F%9F%E6%9F%A5%E8%AF%A2/

由于struct不是C++中的内置类型所以不能用std::find直接查找,而且find函数不能满足值域的查询。这个时候需要使用find_if来进行查询。

1.find_if函数

find_if是一个模板函数,函数原型及函数定义:

template <class InputIterator, class Predicate>
InputIterator find_if(InputIterator first, InputIterator end, Predicate pred) {
   
  while (first != last && !pred(*first)) ++first;
  return first;
}

1.1 函数参数

  • first : 起始迭代器
  • end : 结束迭代器
  • pred : 用于比较数值的函数或者函数对象(仿函数)。遍历条件即为pred()为真.

1.2 函数返回值

若有满足pred条件的元素,返回该元素的迭代器,否则返回end.

1.3 函数说明

该函数最重要的环节是pred,它的核心环节是重载()运算符,因为每个容器迭代器的*运算符得到的结果都是该容器的value_type的值,所以改重载函数的参数类型是value_type的引用类型

1.4 find_if函数应用

在struct的vector中查找特定的对象.特别注意的是:仿函数的参数类型是值的const引用,但是f

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值