title: how boost multi_index is implemented
body: <p>I have some difficulties understanding how Boost.MultiIndex is implemented. Lets say I have the following:</p>
  
  <pre><code>typedef multi_index_container&lt;
      employee,
      indexed_by&lt;    
          ordered_unique&lt;member&lt;employee, std::string, &amp;employee::name&gt; &gt;,
          ordered_unique&lt;member&lt;employee, int, &amp;employee::age&gt; &gt;
      &gt; 
  &gt; employee_set;
  </code></pre>
  
  <p>I imagine that I have one array, <code>Employee[]</code>, which actually stores the <code>employee</code> objects, and two maps  </p>
  
  <pre><code>map&lt;std::string, employee*&gt;
  map&lt;int, employee*&gt;
  </code></pre>
  
  <p>with name and age as keys. Each map has <code>employee*</code> value which points to the stored object in the array. Is this ok?</p>