这里先介绍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. .NET Core 事件总线,分布式事务解决方案:CAP

    背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...

  2. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  3. Carthage的安装和使用

    为什么要使用Carthage CocoaPods是已存在很长时间的Cocoa依赖管理器, 那么为什么要创建Carthage呢? CoaoaPods是一套整体解决方案,我们在Podfile中指定好我们需 ...

  4. phpstudy:80端口被占用解决方案总结

    一开始因为要安装新的软件,同时也由于一直电脑很卡,所以直接重装系统,从WIN8变成WIN10,然后不知道为什么,phpstudy里面80端口被占用了!被占用了!现在找到了两种方法解决! 第一种 该端口 ...

  5. (转)关于java.lang.UnsupportedClassVersionError解决方法总结

    背景:在服务器部署程序是后总是怀疑jdk安装不正确,所以打算运行一个小程序进行测试. 通过这样一个方法 ,可以测试jdk是否正确安装. 1 问题描述 首先编写了个Hello.java的代码: 这里我本 ...

  6. 【MYSQL】解决Mysql直接登录问题(删除匿名用户)(转)

    刚安装的Mysql会存在匿名用户. 在命令行下输入mysql,(如果这时提示不是外部或内部指令,那就把mysql server文件下的bin目录添加到系统路径Path中) 如果没有任何提示,直接进入& ...

  7. (转载) java:IO流学习小结

    今天刚刚看完Java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...

  8. teamviewer试用期到期解决

    1.命令行输入:%appdata%删除teamviewer文件夹2.命令行输入:regedit删除teamviewer文件夹3.卸载tv4.控制面板->设备管理器->网络适配器->f ...

  9. C#和NewSQL更配 —— CockroachDB入门(可能是C#下的全网首发)

    阅读目录 CockroachDB是什么 环境部署 实战 性能测试 结语 一.CockroachDB是什么 CockroachDB(https://www.cockroachlabs.com)是Goog ...

  10. 实例甜点 Unreal Engine 4迷你教程(5)之函数中的静态变量

    本小节的教程无前置教程,可直接学习,篇幅很短. 本教程浓缩起来就是一句话:函数中的静态变量在调试过程中保留值.所以需要谨慎对待. 什么意思?请先不要一步一步对着做,而整体地看一遍下面的过程: 第一步: ...