1)find searches for an element equal to value (using operator==). 3)find_if searches for an element for which predicate p returns true. 5)find_if_not searches for an element for which predicate q returns false. 2,4,6) Same as (1,3,5), but executed according to policy.
Complexity Given result as the return value of adjacent_find, M as std::distance(first, result) and N as std::distance(first, last):