STL算法之find
定义
template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val);
作用
在范围[first, last]之间查找第一个等于val的元素。找到则返回第一个匹配元素的iterator,否则返回last迭代器。
此函数使用operator==来逐个比较元素和val。
改函数模板等效如下:
template<class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val)
{
while (first!=last)
{
if (*first==val)
{
return first;
}
++first;
}
return last;
}
参数
first,last
输入迭代器,分别作为squence起始和终止位置。在范围[first,last)内搜索,包含first,不包含last。
val
在范围内搜索的值。T是支持和InputIterator通过操作符==进行比较操作的类型(元素在操作符的左边,val在其右边)
返回值
当==比较操作为true时,返回第一个元素的迭代器。否则返回last。
示例
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main( int argc, char **argv )
{
vector<int>::iterator ret;
vector<int> numbers{1, 2, 7, 2,3};
//出现一次
ret = find(numbers.begin(), numbers.end(), 1);
if ( ret == numbers.end() )
{
cout << "not found 1" << endl;
}
else
{
cout << "found 1" << endl;
}
//出现多次
ret = find(numbers.begin(), numbers.end(), 2);
if ( ret == numbers.end() )
{
cout << "not found 2" << endl;
}
else
{
//找到的是第一个元素
cout << "found 2 and next element is:"<< *(ret+1) << endl;
}
//未出现
ret = find(numbers.begin(), numbers.end(), 5);
if ( ret == numbers.end() )
{
cout << "not found 5" << endl;
}
else
{
cout << "found 5" << endl;
}
return 0;
}
STL算法之find的更多相关文章
- STL算法
STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...
- 【STL源码学习】STL算法学习之四
排序算法是STL算法中相当常用的一个类别,包括部分排序和全部排序算法,依据效率和应用场景进行选择. 明细: sort 函数原型: template <class RandomAccessIter ...
- 【STL源码学习】STL算法学习之三
第一章:前言 数量不多,用到的时候会很爽. 第二章:明细 STL算法中的又一个分类:分割:将已有元素按照既定规则分割成两部分. is_partitioned 函数原型: template <c ...
- 【STL源码学习】STL算法学习之二
第一章:前言 学习笔记,记录学习STL算法的一些个人所得,在以后想用的时候可以快速拾起. 第二章:明细 copy 函数原型: template <class InputIterator, cla ...
- 【转】三十分钟学会STL算法
转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把 ...
- random_shuffle (stl算法)打乱顺序 - 飞不会的日志 - 网易博客
random_shuffle (stl算法)打乱顺序 - 飞不会的日志 - 网易博客 random_shuffle (stl算法)打乱顺序 2012-03-31 10:39:11| 分类: 算法 | ...
- STL源代码分析——STL算法remove删除算法
前言 因为在前文的<STL算法剖析>中,源代码剖析许多.不方便学习,也不方便以后复习,这里把这些算法进行归类.对他们单独的源代码剖析进行解说.本文介绍的STL算法中的remove删除算法. ...
- STL源代码分析——STL算法merge合并算法
前言 因为在前文的<STL算法剖析>中.源代码剖析许多.不方便学习.也不方便以后复习,这里把这些算法进行归类.对他们单独的源代码剖析进行解说.本文介绍的STL算法中的merge合并算法. ...
- STL源代码分析——STL算法sort排序算法
前言 因为在前文的<STL算法剖析>中,源代码剖析许多,不方便学习,也不方便以后复习.这里把这些算法进行归类,对他们单独的源代码剖析进行解说.本文介绍的STL算法中的sort排序算法,SG ...
- 变易算法 - STL算法
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/mutating-algorithms.h ...
随机推荐
- js-Array数组
一.创建数组的两种方式 1.使用Array构造函数 var colors = new Array(); var colors = new Array(20); var colors = new Arr ...
- 改变说明文档显示位置wrap
装饰器会改变文档的显示位置 例子1:使用wrap前,输出内函数中的说明文档 def check(fun): """检查权限的装饰器""" d ...
- GNU/Linux 介绍
在了解Linux之前要先了解什么是GNU / GNU官方解释? GNU是一个自由软件操作系统.就是说,它尊重其使用者的自由.GNU操作系统包括GNU软件包(专门由GNU工程发布的程序)和由第三方发布的 ...
- 异常-Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=hdfs, access=WRITE, inode="/hbase":root:supergroup:drwxr-xr-x
1 详细异常 Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlExce ...
- tomcat部署(一)
Tomcat部署最佳实践 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomc ...
- 分享私藏多年的Markdown编辑器
相信很多人都使用 Markdown 来编写文章,Markdown 语法简洁,使用起来很是方便,而且各大平台几乎都已支持 Markdown 语法 那么,如何选择一款趁手的 Markdown 编辑器,就是 ...
- python_面向对象——反射
1.反射 四个方法:getattr() 获取 class Person(): def __init__(self,name,age): self.name = name self.age = age ...
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...
- 2019牛客暑期多校训练营(第十场)Han Xin and His Troops——扩展中国剩余定理
题意 求解 $n$ 个模方程 $x \equiv a (mod \ b)$,不保证模数互素($1 \leq n \leq 100$,$0 \leq b < a< 10^5$). 分析 套扩 ...
- XML解析与xml和Map集合的互转
1.XML的解析.首先解析XML文件我们需要先获取到文件的存放路径,获取方法有三种分别获取xml文件不同的存放路径. 代码: public class PropertiesDemo { public ...