一、find()算法

template<class InputIterator, class T>InputIterator find ( InputIterator first, InputIterator last, const T& value ){for ( ;first!=last; first++) if ( *first==value ) break;return first;}

返回区间[first,end)中第一个值等于value的元素的位置。

如果没有找到匹配元素,则返回end。

复杂度:线性复杂度。最多比较次数是:元素的总个数。

程序实例:

下面的程序在int类型的vector中搜寻元素5和12,如果搜索到,就返回其位置if欧泽输出提示信息。

main.cpp(头文件algostuff.h和上一篇博客中的相同):

#include "algostuff.h"using namespace std;int main()
{vector<int> intVec;INSERT_ELEMENTS(intVec,1,9);vector<int>::iterator pos;pos = find(intVec.begin(),intVec.end(),5);if(pos != intVec.end())cout << "The value 5 exists,and its position is " <<distance(intVec.begin(),pos) + 1 << endl;elsecout << "The value 4 not found!" << endl;pos = find(intVec.begin(),intVec.end(),12);if(pos != intVec.end())cout << "The value 12 exists,and its position is " <<distance(intVec.begin(),pos) + 1 << endl;elsecout << "The value 12 not found!" << endl;
}

运行结果 (头文件 algostuff.h 和上一篇博客中的相同):

二、find_if()算法

template<class InputIterator, class Predicate>InputIterator find_if ( InputIterator first, InputIterator last, Predicate pred ){for ( ; first!=last ; first++ ) if ( pred(*first) ) break;return first;}

它在区间[first,end)中搜寻使一元判断式pred为true的第一个元素。

如果没找到,返回end。

程序实例:

下面程序找出第一个能够被3整除的元素,如果找到返回其位置。

main.cpp:

#include "algostuff.h"using namespace std;int main()
{vector<int> intVec;INSERT_ELEMENTS(intVec,1,9);vector<int>::iterator pos;pos = find_if(intVec.begin(),intVec.end(),not1(bind2nd(modulus<int>(),3)));if(pos != intVec.end())cout << "The value divided by 3 exists,and the first value's position is " <<distance(intVec.begin(),pos) + 1 << endl;elsecout << "The value divided by 3 not found!" << endl;
}

运行结果:

【C++ STL学习之七】STL算法之find和find_if相关推荐

  1. 标准模板库(STL)学习指南之List链表

    本文转载自天极网,原文地址:http://www.yesky.com/255/1910755.shtml.转载请注明 什么是STL呢?STL就是Standard Template Library,标准 ...

  2. C++STL常用算术生成算法

    C++STL常用集合算法 学习目标 注意 算法简介 accumulate 功能描述 函数原型 示例 总结 fill 功能描述 函数原型 示例 总结 学习目标 掌握常用的算术生成算法 注意 算术生成算法 ...

  3. 标准模板库(STL)学习指南之List容器

    原文地址:http://dozb.bokee.com/1872684.html [文章导读] STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件 [正文] 什么是STL呢?STL就是St ...

  4. C++ STL学习笔记

    C++ STL学习笔记一 为何要学习STL: 数据结构与算法是编程的核心,STL中包含各种数据结构和优秀的算法,确实值得深入学习,本文中虽然着重使用,但希望有心的朋友能多看看相关数据结构的实现,对于C ...

  5. C++STL学习笔记(4) 分配器(Allocator)

    在前面的博客<C++ STL学习笔记(3) 分配器Allocator,OOP, GP简单介绍>中,简单的介绍了分配器再STL的容器中所担当的角色,这一节对STL六大部件之一的分配器进行详细 ...

  6. C++ STL学习笔记(3) 分配器Allocator,OOP, GP简单介绍

    继续学习侯捷老师的课程! 在前面的博客<C++ STL学习笔记(2) 容器结构与分类>中介绍了STL中常用到的容器以及他们的使用方法,在我们使用容器的时候,背后需要一个东西支持对内存的使用 ...

  7. STL学习——RB-tree篇

    STL学习--RB-tree篇 简介 RB-tree(红黑树)是一棵平衡二叉搜索树,它需要满足以下规则: 1)每个节点不是红色就是黑色: 2)根节点为黑色: 3)如果节点为红,其子节点必须为黑: 4) ...

  8. 【STL学习指南】STL的入门学习指南

    目录 STL 学习指南 一. STL基础 二. C++ STL 容器 1 序列式容器 1.1 array 1.2 vector 1.3 deque 1.4 list 2 关联式容器 2.1 map 2 ...

  9. C++入门、STL学习、二级C++等

    跟侯捷学CPP 跟侯捷学CPP的个人空间_哔哩哔哩_Bilibili <C++ Primer 第五版> <C++ Primer 第五版>_哔哩哔哩_bilibili C++教程 ...

最新文章

  1. k-d tree树 近邻算法
  2. 15 Java面试之JDBC
  3. 对话科大讯飞刘聪:深度学习在中国是否“过火”?
  4. 操作系统原理第七章:死锁
  5. 二、linux最小驱动
  6. 机器学习基础-岭回归-06
  7. jMeter工具里左边树形结构里一些节点属性的介绍
  8. JavaScript的10种跨域共享的方法
  9. leetcode383. 赎金信(两种做法)
  10. 二叉树的遍历(堆栈)
  11. 论文浅尝 | 面向多语言语义解析的神经网络框架
  12. pandas切片操作
  13. ajax提交时“加载中”提示的处理方法
  14. apache http php,性能-安装HTTP使用PHP和Apache使标头失效
  15. ---perl 模块安装方法
  16. 时间字段加一秒_面试Java后端却问我时间轮(Time Wheel)算法,面试官没想到我看过Dubbo源码!...
  17. C的|、||、、、异或、~、!运算
  18. 国美易卡管理云平台,国美易卡采用大量另类数据
  19. apple登录服务端验证
  20. 小米5s Plus安装类原生系统

热门文章

  1. 给图像添加噪声,高斯噪声、椒盐噪声
  2. YOLOv1-YOLOv4
  3. LinkedList理解(1)结构
  4. VSCode内npm run build编译打包时候报错:code ELIFECYCLE - (已解决)
  5. transition属性定义动画
  6. 自旋锁 Linux内核,Linux内核中的自旋锁
  7. 实用常识 | HTML嵌入处理MARKDOWN合并单元格
  8. python一行代码迷宫_通过Python代码实现走迷宫的方法
  9. 容器撑满占满整个高度,垂直居中等
  10. 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面