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

Notes

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