Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App

Related Articles

How does generic find() function works in C++ STL?

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

find(): The find() function is used to search the element in the given range and every STL container has the functionality to search the element using find() function. The generic find function works on every data type.

Return Type:

  • It returns an iterator to the first element in the range [first, last) that equals to the given key
  • If no such element is found, the function returns the iterator to the last element.


  • Vector of different data types like int, string, etc and one key element has been taken. 
  • Based on the key element search function is called.
  • The working mechanism of the search function is written using a template.
  • The function searches the element from the start to the end of the vector, based on the key element. If the value doesn’t exist, then it will return the end iterator.
  • If the key element matches with the vector element, then it will return the element along with its position.

Below is the C++ program to illustrate the implementation of generic find() in vector:


// C++ program to illustrate the
// implementation of generic find()
#include <iostream>
#include <vector>
using namespace std;
// Two generic templates classes one
// for iterator and other for key
template <class ForwardIterator, class T>
ForwardIterator search(
    ForwardIterator start,
    ForwardIterator end, T key)
    while (start != end) {
        // If key is present then return
        // the start iterator
        if ((*start) == key) {
            return start;
        // Increment the iterator
    // If key is not present then,
    // return end iterator
    return end;
// Function to illustrate the use
// of generic find()
void inputElements()
    // Vector of integer data type
    vector<int> v{ 10, 20, 40, 30, 50 };
    // Element to be searched
    int key = 100;
    // Stores the address
    auto it = search(v.begin(), v.end(),
    if (it != v.end()) {
        cout << key << " is present"
             << " at position "
             << it - v.begin() + 1
             << endl;
    else {
        cout << key
             << " is not present"
             << endl;
    cout << endl;
    // Vector of string data type
    vector<string> str{ "C++", "Python",
                        "GFG", "Ruby" };
    // Element to be searched
    string key2 = "GFG";
    // Stores the address
    auto it2 = search(str.begin(), str.end(),
    if (it2 != str.end()) {
        cout << key2 << " is present "
             << "at position "
             << it2 - str.begin() + 1
             << endl;
    else {
        cout << key2 << " is not Present"
             << endl;
// Driver Code
int main()
    // Function Call
    return 0;


100 is not present

GFG is present at position 3

My Personal Notes arrow_drop_up
Last Updated : 01 Mar, 2021
Like Article
Save Article
Similar Reads