template <class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& val);
在範圍[first, last]之間查找第一個等於val的元素。找到則返回第一個匹配元素的iterator,不然返回last迭代器。
此函數使用operator==來逐個比較元素和val。
改函數模板等效以下:ios
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; }
輸入迭代器,分別做爲squence起始和終止位置。在範圍[first,last)內搜索,包含first,不包含last。函數
在範圍內搜索的值。T
是支持和InputIterator經過操做符==進行比較操做的類型(元素在操做符的左邊,val在其右邊)spa
當==比較操做爲true時,返回第一個元素的迭代器。不然返回last。code
#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; }