title: How do I check if two std::vector's contain only the same elements?
body: <p>I need an algorithm or a standard library function for comparing two vector elements, like below:</p>
  
  <pre><code>class Utility
  {
      template &lt;class T&gt;
      static bool CheckIfVectorsEquivalent(   const std::vector&lt;T&gt; &amp; Vec1,
                                              const std::vector&lt;T&gt; &amp; Vec2)
      {
          // ???
      }
  };
  </code></pre>
  
  <p>Working under the following specifications:</p>
  
  <pre><code>std::vector&lt;int&gt; v1, v2, v3, v4, v5, v6, v7, v8;
  
  // Returns false when not all the elements are matching between vectors
  v1.push_back(1);
  v1.push_back(3);
  v1.push_back(5);
  v2.push_back(2);
  v2.push_back(3);
  v2.push_back(8);
  Utility::CheckIfVectorsEquivalent(v1, v2);  // Must return false
  
  // Returns true when all the elements match, even if the are not in the same order
  v3.push_back(3);
  v3.push_back(1);
  v3.push_back(7);
  v4.push_back(7);
  v4.push_back(3);
  v4.push_back(1);
  Utility::CheckIfVectorsEquivalent(v3, v4);  // Must return true
  
  // Returns false when one of the vectors is subset of the other one
  v5.push_back(3);
  v5.push_back(1);
  v5.push_back(7);
  v6.push_back(7);
  v6.push_back(3);
  v6.push_back(1);
  v6.push_back(18);
  v6.push_back(51);
  Utility::CheckIfVectorsEquivalent(v5, v6);  // Must return false
  
  // Returns true when the both vectors are empty
  Utility::CheckIfVectorsEquivalent(v7, v8);  // Must return true
  </code></pre>
  
  <p>Is there any standard (with STL) way of doing this? If not, how can I write this algorithm? It confused me too much.</p>