find (STL Samples)
Illustrates how to use the find Standard Template Library (STL) function in Visual C++.
template<class InputIterator, class T> inline
InputIterator find(
InputIterator First,
InputIterator Last,
const T& Value
)
Remarks
Note
The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.
The find algorithm locates the first element in the range [First, Last) that matches Value and returns the iterator positioned at the first matching element, or Last if no such element exists.
Example
// find.cpp
// compile with: /EHsc
// Demonstrates using find() on a C++ array, a vector, and an STL array.
#include <algorithm>
#include <iostream>
#include <vector>
#include <array>
using namespace std;
using namespace std::tr1;
void FindInArray()
{
const int ARRAY_SIZE = 8;
int IntArray[ARRAY_SIZE] = { 1, 2, 3, 4, 4, 5, 6, 7 };
int value = 4;
// print contents of IntArray
cout << endl << "array";
for(int i = 0; i < ARRAY_SIZE; i+)
{
cout << " " << IntArray[i];
}
cout << endl;
// Find the first element in the range [first, last)
// that matches value.
int *location = find(IntArray, IntArray + ARRAY_SIZE, value);
//print the matching element if any was found
if (location != IntArray + ARRAY_SIZE) // matching element found
{
cout << "First element that matches " << value
<< " is at location " << location - IntArray << endl;
}
else // no matching element was found
{
cout << "The sequence does not contain any elements"
<< " with value " << value << endl;
}
}
void FindInVector()
{
vector<int> v;
v.push_back( 1 );
v.push_back( 2 );
v.push_back( 3 );
v.push_back( 4 );
v.push_back( 4 );
v.push_back( 5 );
v.push_back( 6 );
v.push_back( 7 );
int value = 4;
// print contents of v
cout << endl << "vector";
for(vector<int>::const_iterator i = v.begin(); i != v.end(); ++i)
{
cout << " " << *i;
}
cout << endl;
// Find the first element in the range [first, last)
// that matches value.
vector<int>::const_iterator location = find(v.begin(), v.end(), value);
//print the matching element if any was found
if (location != v.end()) // matching element found
{
cout << "First element that matches " << value
<< " is at location " << location - v.begin() << endl;
}
else // no matching element was found
{
cout << "The sequence does not contain any elements"
<< " with value " << value << endl;
}
}
void FindInStlArray()
{
const int ARRAY_SIZE = 8;
typedef array<int, ARRAY_SIZE> arraytype;
arraytype a = { 1, 2, 3, 4, 4, 5, 6, 7 };
int value = 4;
// print contents of a
cout << endl << "STL array";
for(arraytype::const_iterator i = a.begin(); i != a.end(); ++i)
{
cout << " " << *i;
}
cout << endl;
// Find the first element in the range [first, last)
// that matches value.
arraytype::const_iterator location = find(a.begin(), a.end(), value);
//print the matching element if any was found
if (location != a.end()) // matching element found
{
cout << "First element that matches " << value
<< " is at location " << location - a.begin() << endl;
}
else // no matching element was found
{
cout << "The sequence does not contain any elements"
<< " with value " << value << endl;
}
}
int main()
{
FindInArray();
FindInVector();
FindInStlArray();
}
Output
array 1 2 3 4 4 5 6 7
First element that matches 4 is at location 3
vector 1 2 3 4 4 5 6 7
First element that matches 4 is at location 3
STL array 1 2 3 4 4 5 6 7
First element that matches 4 is at location 3
Requirements
Header: <algorithm>
See Also
Concepts
Standard Template Library Samples
Change History
Date |
History |
Reason |
---|---|---|
March 2009 |
Updated example. |
Customer feedback. |