Defined in header <algorithm> | |||
---|---|---|---|
(1) | |||
| (until C++11) | ||
| (since C++11) | ||
(2) | |||
| (until C++11) | ||
| (since C++11) |
Searches the range [first, last)
for any of the elements in the range [s_first, s_last)
. The first version uses operator==
to compare the elements, the second version uses the given binary predicate p
.
Parameters
first, last | - | the range of elements to examine |
s_first, s_last | - | the range of elements to search for |
p | - | binary predicate which returns true if the elements should be treated as equal. The signature of the predicate function should be equivalent to the following:
The signature does not need to have |
Type requirements | ||
- InputIt must meet the requirements of InputIterator . | ||
- ForwardIt1 must meet the requirements of ForwardIterator . | ||
- ForwardIt2 must meet the requirements of ForwardIterator . |
Return value
Iterator to the first element in the range [first, last)
that is equal to an element from the range [s_first; s_last)
. If no such element is found, last
is returned.
Complexity
Does at most (S*N)
comparisons where S = distance(s_first, s_last)
and N = distance(first, last)
.
Possible implementation
First version | ||
---|---|---|
| ||
Second version | ||
|
Example
The following code searches for any of specified integers in a vector of integers:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <algorithm> #include <iostream> #include <vector> int main() { std::vector< int > v{0, 2, 3, 25, 5}; std::vector< int > t{3, 19, 10, 2}; auto result = std::find_first_of(v.begin(), v.end(), t.begin(), t.end()); if (result == v.end()) { std::cout << "no elements of v were equal to 3, 19, 10 or 2\n" ; } else { std::cout << "found a match at " << std::distance(v.begin(), result) << "\n" ; } } |
Output:
1 | found a match at 1 |
See also
(C++11) | finds the first element satisfying specific criteria (function template) |
std::experimental::parallel::find_first_of
(parallelism TS) | parallelized version of std::find_first_of (function template) |
Please login to continue.