title: Why does the STL reserve an interface for Allocator?
body: <p>Why does the STL reserve an interface for Allocator?
  Taking <code>vector</code> as example:</p>
  
  <pre><code>template&lt;class T,class Allocator = std::allocator&lt;T&gt;&gt; 
  class vector;
  </code></pre>
  
  <p>Since there are many options for us to allocate memory and construct objects like<br>
  <code>operator new,delete,new[],delete[]</code>,which could do almost anything we need when we create an object.<br>
  So why does the STL containers like <code>vector</code> need an Allocator interface,which at most time is the default <code>std::allocator</code> if we don't assgin one? <strong>Why not just use the <code>new</code> expressions?</strong><br>
  If the purpose is to make user-defined allocating behaviors possible,why not just let the users provide their self-defined <code>operator new,new[]</code>,etc?</p>