title: unordered_map to have three elements
body: <p>I am trying to have three elements in an <code>unordered_map</code>. I tried the following code </p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #include &lt;algorithm&gt;
  #include &lt;boost/unordered_map.hpp&gt;
  
  typedef boost::unordered_map&lt;int, std::pair&lt;int, int&gt;&gt; mymap;
  mymap m;
  
  int main(){
  //std::unordered_map&lt;int, std::pair&lt;int, int&gt; &gt; m;
  m.insert({3, std::make_pair(1,1)});
  m.insert({4, std::make_pair(5,1)});
  for (auto&amp; x: m)
      std::cout &lt;&lt; x.first &lt;&lt; ": "&lt;&lt; x.second &lt;&lt; std::endl;
  
  }
  </code></pre>
  
  <p>but I get many errors in the print statement something like </p>
  
  <blockquote>
    <p>‘std::pair’ is not derived from ‘const std::__cxx11::basic_string&lt;_CharT, _Traits, _Alloc>’
         std::cout &lt;&lt; x.first &lt;&lt; ": "&lt;&lt; x.second &lt;&lt; std::endl;</p>
  </blockquote>