title: Is for(auto i : unordered_map) guaranteed to have the same order every time?
body: <p>When I iterate over a <code>std::unordered_map</code> with the range based for loop twice, is the order guaranteed to be equal?</p>
  
  <pre><code>std::unordered_map&lt;std::string, std::string&gt; map;
  
  std::string query = "INSERT INTO table (";
  bool first = true;
  for(auto i : map)
  {
      if(first) first = false;
      else query += ", ";
      query += i.first;
  }
  query += ") ";
  
  query += "VALUES (";
  first = true;
  for(auto i : map)
  {
      if(first) first = false;
      else query += ", ";
      query += i.second;
  }
  query += ");"
  </code></pre>
  
  <p>In the example above, the resulting string should be in that form. Therefore, it is important that both times, the order of iteration is the same.</p>
  
  <pre><code>INSERT INTO table (key1, key2, key3) VALUES (value1, value2, value3);
  </code></pre>
  
  <p>Is this guaranteed in C++?</p>