原型与概述
它与所有的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 可以进行相等比较,否则程序无法通过编译,并因此而产生许多编译时错误消息。