title: Looped push_back against resize() + iterator
body: <p>Simple question; what's better and why?</p>
  
  <pre><code>
  
      out.resize( in.size() );
      T1::iterator outit = out.begin();
      for( inIt = in.begin() to end, ++inIt, ++outIt )
         *outit = *inIt
  OR
  
      out.erase();
      for( inIt = in.begin() to end, ++inIt )
          out.push_back( inIt );
  
  
  </code></pre>
  
  <p>I'm assuming the memory assignment implicit in push_back is worth avoiding but want to make sure.</p>
  
  <p>Thanks</p>
  
  <p>EDIT:
  Thanks for the out = in suggestions guys ;). The actual code I'm playing with is:</p>
  
  <pre><code>
  template//can't stop the browser ignoring th class T1, class T2 in angle brackets
  bool asciihex( T1& out, const T2& in )
  {
      //out.erase();
      out.resize( in.size() / 2 );
      if( std::distance( in.begin(), in.end() ) % 2 )//use distance rather than size to minimise the requirements on T2?
          return false;
      for( T2::const_iterator it = in.begin(); it != in.end(); it += 2 )
      {
          out.push_back(((( (*it > '9' ? *it - 0x07 : *it)  - 0x30)  '9' ? *(it+1) - 0x07 : *(it+1)) - 0x30) & 0x000f));
      }
      return true;
  }
  
  template
  bool asciihex( T1& out, const T2& in )
  {
      size_t size = in.size();
      if( size % 2 )//use distance rather than size to minimise the requirements on T2?
          return false;
      out.resize( size / 2 );
      T1::iterator outit = out.begin();
      for( T2::const_iterator it = in.begin(); it != in.end(); it += 2, ++outit )
      {
          *outit = ((( (*it > '9' ? *it - 0x07 : *it)  - 0x30)  '9' ? *(it+1) - 0x07 : *(it+1)) - 0x30) & 0x000f);
      }
      return true;
  }
  </code></pre>
  
  <p>Edit: I've marked push_back as the answer as it seems to be the consensus and, therefore, more useful to anyone else with the same problem. However I have ended up using the iterator method as one of the container classes I'm interested in doesn't support push_back... mileage varies.</p>