原型與概述
它與所有的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 可以進行相等比較,否則程序無法通過編譯,並因此而產生許多編譯時錯誤消息。