find函数

是在一个迭代器范围内查找特定元素得函数,可将将他用于任意容器类型得元素。这个函数返回的是所找元素得引用,如果没有找到元素就会返回这个容器得尾迭代器。

#include <iostream>
#include <vector>
#include <time.h> int main()
{
std::vector<int> vec;
int inputTofind = ;
srand(time(NULL)); for (int i = ; i < ; ++i)
{
int temp = rand() % ;
vec.push_back(temp);
std::cout << temp << " ";
} std::cout << std::endl;
std::cout << "you want to look for num : ";
std::cin >> inputTofind; auto endIt = std::end(vec);
auto result = find(std::begin(vec), endIt, inputTofind); if (result != endIt)
{
std::cout << "find it " << *result << std::endl;
}
else
{
std::cout << "No find!" << std::endl;
} return ;
}

结果:

21 7 55 81 67 44 18 10 82 87
you want to look for num : 81
find it 81
请按任意键继续. . .

find_if函数

与find()函数一样,区别就是它可以接受接收一个谓词函数,而不是简单的匹配元素,谓词函数返回的是true或则false;如果是返回了true则find_if函数返回了查找元素的迭代器;如果一直找不到制定的元素就会返回尾迭代器;

#include <iostream>
#include <vector>
#include <algorithm>
#include <time.h> bool perfectScord(int scord)
{
return scord >= ;
} int main()
{
std::vector<int> vec;
int inputTofind = ;
srand(time(NULL)); for (int i = ; i < ; ++i)
{
int temp = rand() % ;
vec.push_back(temp);
std::cout << temp << " ";
} std::cout << std::endl;
// std::cout << "you want to look for num : ";
// std::cin >> inputTofind; auto endIt = std::cend(vec); auto result = find_if(std::cbegin(vec), endIt, perfectScord); if (result != endIt)
{
std::cout << "find it " << *result << std::endl;
}
else
{
std::cout << "No find!" << std::endl;
} return ;
}

结果是:

86 82 59 13 84 91 42 18 92 67
find it 86
请按任意键继续. . .

注意的是find_if函数在头文件#include <algorithm>

其实这里的谓词函数也能换成lambda函数:

auto result = find_if(std::cbegin(vec), endIt, [](int i) {return i > ; });

find和find_if的更多相关文章

  1. STL的std::find和std::find_if

    std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...

  2. C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用

    一.find运算 假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值. 解决这个问题最简单的方法时使用标准库提供的find运算: 1 // value we'll lo ...

  3. stl::find,find_if,find_if_not

    //满足特定条件下的实现,回调函数template<class InputIt, class UnaryPredicate> InputIt find_if(InputIt first, ...

  4. find_if函数与partition函数的转换

    编写程序,求大于等于一个给定长度的单词有多少.我们还会修改输出,使程序只打印大于等于给定长度的单词. 使用find_if实现的代码如下: #include<algorithm> #incl ...

  5. STL中的find_if函数

      上一篇文章也讲过,find()函数只能处理简单类型的内容,也就是缺省类型,如果你想用一个自定义类型的数据作为查找依据则会出错!这里将讲述另外一个函数find_if()的用法 这是find()的一个 ...

  6. STL 查找vector容器中的指定对象:find()与find_if()算法

    1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停 ...

  7. c++ stl algorithm: std::find, std::find_if

    std::find: 查找容器元素, find仅仅能查找容器元素为<基本数据类型> [cpp] view plaincopy #include <iostream> #incl ...

  8. STL --> find()和find_if()

    find()和find_if() 一.find()函数 find(first, end, value); // 返回区间[first,end)中第一个值等于value的元素的位置.如果没有找到匹配元素 ...

  9. find和find_if,value_type

    find算法:返回 [first,end)中第一个值等于value元素的位置 线性复杂度:最多比较次数:元素的总个数 find函数的最后一个参数,必须是string,float,char,double ...

  10. C++中find_if

    总结:find_if针对查找的对象中包含指针需要进行比较 find则更偏向于普通的数值或者字符比较 两者都可以应用于自定义的类,只需在类中重载==运载符 函数调用符()说白了其实就是代替函数指针,调用 ...

随机推荐

  1. 【Java并发编程】7、线程池

    1. 为什么使用线程池 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过网络协 ...

  2. Oracle总结之plsql编程(基础七)

    紧接基础六,对oracle角色和权限的管理之后,在接下来的几次总结中来就最近工作中用过的plsql编程方面的知识进行总结,和大家分享! 原创作品,转自请注明出处:https://www.cnblogs ...

  3. Java GC机制详解

    垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制. 导读: 1.什么是GC 2.GC常用算法 3.垃圾收集器 4.finalize()方法详解 5. ...

  4. 十分钟搞定mac下的phpstorm增加xdebug调试

    一.版本信息 mac 10.10.5 php  5.5.38 phpstorm 10.0.3 xdebug   版本需要与php匹配,匹配地址 :点我匹配  点我查看所有版本 提示:不确定xdebug ...

  5. Java的类加载过程

    一个Java文件从编码完成到最终执行,一般主要包括两个过程:编译与运行.编译即将Java文件通过Javac命令生成.class文件的过程,运行就是将.class文件交给JVM进行执行. 类加载过程即是 ...

  6. js-react组件生命周期

    组件的生命周期可分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM 生命周期的方法有: componentWillMoun ...

  7. 【读书笔记】iOS-报刊杂志-Newsstand应用编程

    一,使用Newsstand Kit API 苹果公司在iOS5之后提供了电子报刊杂志开发API-Newsstand Kit.Newsstand Kit 只有3个类:NKLibrary,NKIssue和 ...

  8. [基础知识]在PeopleSoft中SMTP设置不生效如何查找问题

    在PeopleSoft中如果配置了工作流邮件或者标准页面的通知,都是可以发送出邮件的,这些邮件都是由SMTP服务器发送.SMTP需要在APP服务器和PRCS服务器中配置. 如果无法从PeopleSof ...

  9. 新飞电器的BI建设案例

    一.河南新飞电器简介 河南新飞电器在制造行业内属于领先地位,其信息化程度较高,面对系统多且杂乱的情况,一个集中展示数据的平台就显得尤为重要.使用BI就是为了在一个相对统一的平台展示需要查看的数据,供决 ...

  10. 树莓派 温度监控 PWM 控制风扇 shell python c 语言

    Mine: 图中圈出来的是三极管 和滤波电容 依赖库: wiringPi sudo apt-get install wiringpi Shell脚本 本文介绍使用Shell脚本在树莓派上启用软件PWM ...