title: Difference between std::search and std::find_first_of
body: <p>I am trying to grasp the difference between <code>std::search</code> and <code>std::find_first_of</code></p>
  
  <p>They have the same prototypes:</p>
  
  <pre><code>template &lt;class ForwardIterator1, class ForwardIterator2&gt;
     ForwardIterator1 find_first_of (ForwardIterator1 first1, ForwardIterator1 last1,
                                     ForwardIterator2 first2, ForwardIterator2 last2);
  
  template &lt;class ForwardIterator1, class ForwardIterator2, class BinaryPredicate&gt;
     ForwardIterator1 find_first_of (ForwardIterator1 first1, ForwardIterator1 last1,
                                     ForwardIterator2 first2, ForwardIterator2 last2,
                                     BinaryPredicate pred);
  
  template &lt;class ForwardIterator1, class ForwardIterator2&gt;
     ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1,
                              ForwardIterator2 first2, ForwardIterator2 last2);
  
  template &lt;class ForwardIterator1, class ForwardIterator2, class BinaryPredicate&gt;
     ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1,
                              ForwardIterator2 first2, ForwardIterator2 last2,
                              BinaryPredicate pred);
  </code></pre>
  
  <p>They both return the same thing: An iterator to the first occurrence of the sequence [first2, last2) inside [first1, last1). (using equality, or a binary predicate)</p>
  
  <p>So what is the difference ? Am I wrong ?</p>