原型与概述
它与所有的STL算法一样,是一个模板函数,它的原型如下:
#include <algorithm>
template < class InputIterator, class T >
InputIterator find ( InputIterator first, InputIterator last, const T & value ) ;
template < class InputIterator, class T >
InputIterator find ( InputIterator first, InputIterator last, const T & value ) ;
在区间 [first, last) 里查找值为 value 的对象。
参数与返回值
参数:本算法的功能是在区间里查找给定值,所以它的参数无疑是:给定区间和给定值。区间通过两个向前迭代器指出,而值通过一个只读引用给出。原型中的 first 和 last 分别为区间的起始与终点,find 在区间 [first, last) 上查找值与 value 相等的对象。
返回值:如果找到与 value 值相等的对象,则返回指向该对象的迭代器;如果没有找到这样的一个对象,则返回迭代器 last。
示例
本算法简单明了,本可以不用示例,但此处仍提供一个简单示例。本示例在一个整形数组里查找一个指定整数。
#include<algorithm>
#include<iostream>
int main ( )
{
int array [5 ] = {1, 3, 5, 7, 9 } ;
//查找值为 7 的整数对象
int * iterator =std :: find (
static_cast < int * > (array ), //起始迭代器
static_cast < int * > (array ) + 5, //迭代器终点
7 //需要查找的值
) ;
//打印出来的结果将是 7
std :: cout << *iterator << std :: endl ;
return 0
}
#include<iostream>
int main ( )
{
int array [5 ] = {1, 3, 5, 7, 9 } ;
//查找值为 7 的整数对象
int * iterator =std :: find (
static_cast < int * > (array ), //起始迭代器
static_cast < int * > (array ) + 5, //迭代器终点
7 //需要查找的值
) ;
//打印出来的结果将是 7
std :: cout << *iterator << std :: endl ;
return 0
}
注意事项
在查找的过程隐含对对象的比较,因此迭代器返回的值类型至少应该与 value 可以进行相等比较,否则程序无法通过编译,并因此而产生许多编译时错误消息。