What is find() function in C++?
- The find() function can be used in C++ programs by including <algorithm.h> in the header.
- The find function is used to search elements in the given range of numbers.
- It takes three parameters – first, last, and val.
Syntax of the find function
The general syntax of the find() function is:
first | Initial position of the input iterator. |
last | The last position of the input iterator. |
val | A value to be provided that is compared with the elements. |
Returns | If the val provided is found then the find() function returns the iterator pointing to the first occurrence of the element. |
no match | If no match is found the function returns last. |
Now let us look at a few C++ programs to understand how find() function works in C++ with different ranges.
An example of find() with vector
For this program, we have a vector with seven elements of int type.
Then we used the find function to search for an element by providing the first and last parameters along with a value.
Have a look at the code and output:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { vector<int> vect_f = { 0, 5, 10, 15, 20, 25, 30 }; //Which element to find? int fnd = 15; auto iter = find(vect_f.begin(), vect_f.end(), fnd); if (iter != vect_f.end()){ cout << "Element found: " << *iter << "\n"; cout << "Element position from 0 = " <<iter - vect_f.begin() << "\n" ; } else cout << "Searched Element Does not exist! \n"; return 0; }
Output:
Element position from 0 = 3
- We searched for element 15 in the vector
- It exists at position 3 – as we count from zero
What happens if elements is not found?
In this program, we searched for an element that does not exist in the vector’s given range.
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { vector<int> vect_f = { 0, 5, 10, 15, 20, 25, 30 }; //Which element to find? int fnd = 35; auto iter = find(vect_f.begin(), vect_f.end(), fnd); if (iter != vect_f.end()){ cout << "Element found: " << *iter << "\n"; cout << "Element position from 0 = " <<iter - vect_f.begin() << "\n" ; } else{ cout << "We Searched for element: " << fnd << "\n"; cout << "Searched Element Does not exist! \n"; } return 0; }
Output:
We Searched for element: 15
Searched Element Does not exist!
What if duplicate elements exist in the range?
This time we have a vector with duplicate elements. We will search element 10 which exists twice in the vector, see what output we get:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { vector<int> vect_f = { 0, 5, 10, 15, 15, 10, 5 }; //Which element to find? int fnd = 10; auto iter = find(vect_f.begin(), vect_f.end(), fnd); if (iter != vect_f.end()){ cout << "Element found: " << *iter << "\n"; cout << "Element position from 0 = " <<iter - vect_f.begin() << "\n" ; } else{ cout << "We Searched for element: " << fnd << "\n"; cout << "Searched Element Does not exist! \n"; } return 0; }
Output:
Element found: 10
Element position from 0 = 2
So, the find() function returns the occurrence of the first element found in the given range.
Using find function with an array example
The following C++ program uses an array and then we use the find() function to search an element in the array.
#include <iostream> #include <algorithm> using namespace std; int main() { int intArr[] = { 1, 3, 5, 7, 9, 11, 13, 15 }; size_t ArrSize = sizeof(intArr) / sizeof(int); int *end = intArr + ArrSize; //Which element to find? int fnd = 11; int *result = std::find(intArr, end, fnd); if (result != end) { cout << "Element " <<fnd <<" exists in the array \n\n"; } else{ cout << "Element " <<fnd <<" does not exist! \n\n"; } return 0; }
Output: