find和find_if
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的更多相关文章
- STL的std::find和std::find_if
std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...
- C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
一.find运算 假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值. 解决这个问题最简单的方法时使用标准库提供的find运算: 1 // value we'll lo ...
- stl::find,find_if,find_if_not
//满足特定条件下的实现,回调函数template<class InputIt, class UnaryPredicate> InputIt find_if(InputIt first, ...
- find_if函数与partition函数的转换
编写程序,求大于等于一个给定长度的单词有多少.我们还会修改输出,使程序只打印大于等于给定长度的单词. 使用find_if实现的代码如下: #include<algorithm> #incl ...
- STL中的find_if函数
上一篇文章也讲过,find()函数只能处理简单类型的内容,也就是缺省类型,如果你想用一个自定义类型的数据作为查找依据则会出错!这里将讲述另外一个函数find_if()的用法 这是find()的一个 ...
- STL 查找vector容器中的指定对象:find()与find_if()算法
1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停 ...
- c++ stl algorithm: std::find, std::find_if
std::find: 查找容器元素, find仅仅能查找容器元素为<基本数据类型> [cpp] view plaincopy #include <iostream> #incl ...
- STL --> find()和find_if()
find()和find_if() 一.find()函数 find(first, end, value); // 返回区间[first,end)中第一个值等于value的元素的位置.如果没有找到匹配元素 ...
- find和find_if,value_type
find算法:返回 [first,end)中第一个值等于value元素的位置 线性复杂度:最多比较次数:元素的总个数 find函数的最后一个参数,必须是string,float,char,double ...
- C++中find_if
总结:find_if针对查找的对象中包含指针需要进行比较 find则更偏向于普通的数值或者字符比较 两者都可以应用于自定义的类,只需在类中重载==运载符 函数调用符()说白了其实就是代替函数指针,调用 ...
随机推荐
- java基础-面向对象的思想
一.什么是面向对象 面向对象是一种思想,在java中通常我们会说一句话一切事物即对象.而面向对象到底是怎么回事呢?这里我从人们对问题的思考来阐述,人在思考的一个问题的时候比如在解决一个数学问题的时候我 ...
- TCP Socket Http关系
理解Tomcat内部处理网络数据的机制同时需要了解相关的一些术语,这样我们在阅读源码的时候能更加清楚的理解Connector下使用到的Socket通信原理. TCP/IP: 数据在网络传输是基于TCP ...
- Selenium使用总结(Java版本)
硒在最近的发展中被广泛应用,因为它以前没有被使用过,并且已经走了太多的坑.这是一张唱片. 1.环境配置 配置要点: 1.Web驱动程序应该与浏览器版本相对应,chrome使用chrome驱动程序和ch ...
- Java图片验证码乱码问题
有时部署到linux服务器上的web项目的图形验证码可能会出现乱码问题 这不是编码格式出错了,而是可能服务器上没有图形验证码中限定的那种字体 比如生成图形验证码的代码: Font font = new ...
- Navicat11全系列激活工具和使用方法
Navicat特别好使,但是就是得注册,在网上看到了一个激活工具,成功激活了Navicat...工具链接地址是.. https://files.cnblogs.com/files/miantiaoan ...
- 使用memcache对wordpress优化,提速
环境: 一个本地开发环境 一个部署在虚拟机中( 虚拟机安装memcache缓存),然后用这个优化的版本跟本地开发环境对比. wordpress版本:4.9.5 php:5.6版本 1,首先在主题的fu ...
- SD从零开始01-02
SD从零开始1 SD中的组织结构 销售相关的组织结构: 销售组织Sales organization 分销渠道Distribution channel 产品组Division 销售区域Sales ar ...
- SAP wonderful links
http://sapbrainsonline.com/help/sap-r3-architecture-introduction.html http://www.guru99.com/learning ...
- java实现文件复制粘贴功能
java编程思想中讲到了IO流的思想,以前对于java基础总是不够深入,浅尝辄止,如今碰到语句插桩的时候就感到书到用时方恨少啊! 文件的复制涉及到源文件和新文件(无需手动创建),给出源文件的路径和文件 ...
- react native中如何往服务器上传网络图片
let common_url = 'http://192.168.1.1:8080/'; //服务器地址 let token = ''; //用户登陆后返回的token /** * 使用fetch实现 ...