title: set_difference issues, not returning all values or duplicates
body: <p>I am trying to take to arrays and output the integers that don't appear in the first (bag1) and second (bag2) array into a new third (newbag) array.The function is not giving me the correct difference. It also needs to contain any duplicates if one bag has more of a certain number.</p>
  
  <p>My output is missing the duplicates from the list:</p>
  
  <pre><code>Bag 1: 1 3 3 4 5 5 7 7 8 9 9 11 12 12 12 16
  Bag 2: -100 -4 1 3 3 4 5 6 7 8 8 9 11 12 12 12 15 19
  Difference Bag: -100 -4 6 8 15 19
  </code></pre>
  
  <p>I have tried changing the order order of the bags, but they right numbers never output.</p>
  
  <pre><code>const ArrayBag ArrayBag ::operator - (const ArrayBag bag){
      ArrayBag newBag;
      vector&lt;int&gt; diff;
      set_difference(items,items + getCurrentSize(),bag.items,bag.items + 
      bag.getCurrentSize(),
                   inserter(diff,diff.begin()));
  
      for (int i = 0; i &lt; diff.size(); i++) {
        newBag.add(diff[i]);
      }
      return(newBag);
  </code></pre>