title: Why is there no reserving constructor for std::string?
body: <p>There are several <a href="http://en.cppreference.com/w/cpp/string/basic_string">constructors</a> for <code>std::string</code>. I was looking for a way to avoid reallocation and I'm surprised that there is a fill constructor but no "reserve" constructor.</p>
  
  <pre><code> std::string (size_t n, char c);
  </code></pre>
  
  <p>but no </p>
  
  <pre><code> std::string (size_t n);
  </code></pre>
  
  <p>So do I have to call <code>reserve()</code> after it already allocated the default (16 bytes in my case), just to immediately reallocate it?</p>
  
  <p>Is there a reason why there is no such constructor to reserve space directly when the object is created, instead of having to do it manually? Or am I missing something and there is some way to do this?</p>
  
  <p>Using the fill constructor is a waste of time, because it will loop through the memory just to get overwritten, and also cause a wrong size, because <code>s.length()</code> reports <code>N</code> instead of <code>0</code>.</p>