这里先介绍find, find_if, find_first_of,三个函数。其余的以后再更新。

一、std::find()

用法:find(first, end, value);

返回区间[first,end)中第一个值等于value的元素位置;若未找到,返回end。函数返回的是迭代器或指针,即位置信息。

参考代码main(),查找findvalue的值

二、std::find_if()

用法:find_if(first, end, bool pred);

返回区间[first,end)中使一元判断式pred为true的第一个元素位置;若未找到,返回end。

参考代码main(),test_find_if();查找第一个被5整除的数,pred写成bool函数

三、std::find_first_of()

用法:find_first_of(first1, end1, first2, end2);

返回第一个区间迭代器位置,满足第一个区间[first1,end1)中的元素第一次出现在第二个区间[first2,end2)中。

通俗就是说顺序从第一个区间[first1,end1)中取一个元素,在第二个区间中找有没有相同的元素,如果有就返回第一个区间中元素位置;未找到则继续

用第一个区间的下一个元素在第二个区间找。

因此只要保证两个区间内的元素可以==即可,不用管装元素的容器形式。下面的例子我第一个区间用的vector、而第二个区间是list也是可以的。

参考代码main(),test_find_first_of();查找vector中第一次出现在list的元素。

代码示例:

 bool divbyfive(int x)
{
return x% ? : ;
} void test_find_if(vector<int> vec)
{
vector<int>::iterator vec_it;
vec_it=find_if(vec.begin(),vec.end(),divbyfive);
if (vec_it!=vec.end())
{
cout<<"满足判断函数的数为: "<<*vec_it<<"位置在"<<vec_it-vec.begin()<<endl;
}
else
{cout<<"未找到满足判断函数的数"<<endl;
}
return;
} void test_find_first_of(vector<int> vec)
{
list<int> list2;
for (int i=;i>;i--)
{
list2.push_back(i);
}
vector<int>::iterator vec_it;
vec_it=find_first_of(vec.begin(),vec.end(),list2.begin(),list2.end());
if (vec_it!=vec.end())
{
cout<<"第一次出现在第二个容器的元素为: "<<*vec_it<<"位置在: "<<vec_it-vec.begin()<<endl;
}
else
{
cout<<"两个容器没有相同元素"<<endl;
}
} int main()
{
vector<int> vec;
int findvalue=;
for (int i=;i<;i++)
{
vec.push_back(i);
}
vector<int>::iterator vec_it;
vec_it=find(vec.begin(),vec.end(),findvalue);
if (vec_it!=vec.end())
{
cout<<findvalue<<" position is "<<distance(vec.begin(),vec_it)<<endl;
}
else
cout<<findvalue<<"is not found"<<endl; test_find_if(vec);
test_find_first_of(vec);
return ;
}

参考:http://www.cnblogs.com/heyonggang/p/3241789.html

STL学习之find系列函数的更多相关文章

  1. ###STL学习--函数对象

    点击查看Evernote原文. #@author: gr #@date: 2014-08-13 #@email: forgerui@gmail.com 在stl中,函数对象被大量地使用,用以提高代码的 ...

  2. PHP进程通信基础——shmop 、sem系列函数使用

    PHP进程通信基础--shmop .sem系列函数使用 进程通信的原理就是在系统中开辟出一个共享区域,不管是管道也好,还是共享内存,都是这个原理.如果心中有了这个概念,就会很方便去理解代码.由于官网上 ...

  3. 从简单需求到OLAP的RANK系列函数

    同事问了一个非常简单的问题,怎么取出每个partition里面另外一个列的最小值? create table t1 (int c1, int c2);   假如按照c2分区,0-10,10-20,20 ...

  4. STL学习之路

    本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者.这实际上是我学习STL的一篇笔记,老鸟就不用看了. 什么是泛型程序设计 我们可以简单 ...

  5. STL学习小结

    STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...

  6. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  7. posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序

    posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...

  8. ###STL学习--vector

    点击查看Evernote原文. #@author: gr #@date: 2014-08-11 #@email: forgerui@gmail.com vector的相关问题.<stl学习> ...

  9. ###STL学习--关联容器

    点击查看Evernote原文. #@author: gr #@date: 2014-08-23 #@email: forgerui@gmail.com STL中的关联容器. ###stl学习 |--迭 ...

随机推荐

  1. 利用TinyXml进行数据库的热更新

    TinyXml库比较小,但功能较为完善,挺适合用来读取小块的xml文件; 我写了几个利用TinyXml读取和保存数据的例子,大家可以参考使用; 主要是为了热更新配置所做的一些函数应用; //开始热更 ...

  2. xdu_1077:循环节长度

    题意很简单,就是给出p,q,求p/q的循环节长度. 由循环小数的循环部分的值等于等比数列求和的值S,列公式得到最简分数分母的值.最终得10^x%q==1(其中q为经过modify之后的值).搞清这些之 ...

  3. TypeScript--变量及类型的那些事儿

    变量(类型)声明 格式:关键字  变量名称:类型=值 (强类型)     /   关键字  变量名称=值 例子: Array数组声明   Tuple元组类型 声明一个包含多类型的数组: Enum枚举类 ...

  4. pb日志查看记录

    因为日志的种类比较多,这里记录下来,方便查看! 1 pb下发日志查看 目前已经确定220-224 603都是这么查看的.手工下发的业务应该都是这么查看的,其实只要去确定步骤2中的序号,就可以直接进入步 ...

  5. tensorflow官方文档中的sub 和mul中的函数已经在API中改名了

    在照着tensorflow 官方文档和极客学院中tensorflow中文文档学习tensorflow时,遇到下面的两个问题: 1)AttributeError: module 'tensorflow' ...

  6. PHPsthdy+xdebug

    PHPsthdy下载后查看phpinfo后会发现没有xdebug这一项: 1.phpStudy集成了XDebug扩展,所以不用单独下载XDebug. 2.打开XDebug扩展:右击PHPstudy的图 ...

  7. HTML细节

    link   设置body中超链接默认颜色 : alink  设置body中超链接点击时候的颜色: vlink  设置body中超链接访问过后的颜色 字体的大小  size       大小 取值范围 ...

  8. Android 性能测试——Heap Viewer 工具

    Android 性能测试--Heap Viewer 工具 Heap Viewer能做什么? 实时查看App分配的内存大小和空闲内存大小 发现Memory Leaks Heap Viewer使用条件 5 ...

  9. 显示引擎innodb状态详解

    很多人让我来阐述一下  SHOW INNODB STATUS 的输出信息,了解SHOW INNODB STATUS都输出了几个什么信息,并且我们能够这些信息中获取什么资讯,得以提高MySQL性能. 首 ...

  10. java_==和equal方法

    java测试两个变量是否相等有两种方式: 一种是利用"=="运算符 值和对象的判断 一种是利用equals()方法 只是值的判断 1.如果两个变量是基本类型变量,且都是数值类型(不 ...