find (STL Samples)

在 Visual C++ 演示如何使用 查找 标准 (STL)模板库函数。

template<class InputIterator, class T> inline 
   InputIterator find(
      InputIterator First,
      InputIterator Last,
      const T& Value
   )

备注

备注

类/参数名在原型不匹配版本在头文件。修改某些提高可读性。

查找 算法将第一个元素针对的范围 [First, Last) 与 Value 并返回迭代器确定在第一个匹配的元素或 Last ,如果不存在这样的元素。

示例

// 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

要求

**标题:**algorithm

请参见

概念

标准模板库示例