<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[unordered_map]]></title><description><![CDATA[<p>hi,</p>
<p>wie kann ich folgendes ohne undefined behavior implementieren?<br />
ich moechte die key/val pairs der hashtable ausgeben und zugleich iterativ die elemente loeschen...</p>
<pre><code>// unordered_map::erase
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;unordered_map&gt;

int main ()
{
  std::unordered_map&lt;std::string,std::string&gt; mymap;

  // populating container:
  mymap[&quot;U.S.&quot;] = &quot;Washington&quot;;
  mymap[&quot;U.K.&quot;] = &quot;London&quot;;
  mymap[&quot;France&quot;] = &quot;Paris&quot;;
  mymap[&quot;Russia&quot;] = &quot;Moscow&quot;;
  mymap[&quot;China&quot;] = &quot;Beijing&quot;;
  mymap[&quot;Germany&quot;] = &quot;Berlin&quot;;
  mymap[&quot;Japan&quot;] = &quot;Tokyo&quot;;

  // erase examples:
  //mymap.erase ( mymap.begin() );      // erasing by iterator
  //mymap.erase (&quot;France&quot;);             // erasing by key
  //mymap.erase ( mymap.find(&quot;China&quot;), mymap.end() ); // erasing by range

  // show content:
  for ( auto&amp; x: mymap ) {
    std::cout &lt;&lt; x.first &lt;&lt; &quot;: &quot; &lt;&lt; x.second &lt;&lt; std::endl;
    mymap.erase(x.first);
  }

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/331113/unordered_map</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 00:16:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331113.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Feb 2015 13:21:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unordered_map on Wed, 11 Feb 2015 13:21:04 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>wie kann ich folgendes ohne undefined behavior implementieren?<br />
ich moechte die key/val pairs der hashtable ausgeben und zugleich iterativ die elemente loeschen...</p>
<pre><code>// unordered_map::erase
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;unordered_map&gt;

int main ()
{
  std::unordered_map&lt;std::string,std::string&gt; mymap;

  // populating container:
  mymap[&quot;U.S.&quot;] = &quot;Washington&quot;;
  mymap[&quot;U.K.&quot;] = &quot;London&quot;;
  mymap[&quot;France&quot;] = &quot;Paris&quot;;
  mymap[&quot;Russia&quot;] = &quot;Moscow&quot;;
  mymap[&quot;China&quot;] = &quot;Beijing&quot;;
  mymap[&quot;Germany&quot;] = &quot;Berlin&quot;;
  mymap[&quot;Japan&quot;] = &quot;Tokyo&quot;;

  // erase examples:
  //mymap.erase ( mymap.begin() );      // erasing by iterator
  //mymap.erase (&quot;France&quot;);             // erasing by key
  //mymap.erase ( mymap.find(&quot;China&quot;), mymap.end() ); // erasing by range

  // show content:
  for ( auto&amp; x: mymap ) {
    std::cout &lt;&lt; x.first &lt;&lt; &quot;: &quot; &lt;&lt; x.second &lt;&lt; std::endl;
    mymap.erase(x.first);
  }

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2442245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442245</guid><dc:creator><![CDATA[roggerr]]></dc:creator><pubDate>Wed, 11 Feb 2015 13:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to unordered_map on Wed, 11 Feb 2015 13:26:20 GMT]]></title><description><![CDATA[<p>ich nehme an das ist nur so moeglich?</p>
<pre><code>while ( !mymap.empty() ) {
  	auto x = mymap.begin();
    std::cout &lt;&lt; x-&gt;first &lt;&lt; &quot;: &quot; &lt;&lt; x-&gt;second &lt;&lt; std::endl;
    mymap.erase(x-&gt;first);
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2442248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442248</guid><dc:creator><![CDATA[roggerr]]></dc:creator><pubDate>Wed, 11 Feb 2015 13:26:20 GMT</pubDate></item><item><title><![CDATA[Reply to unordered_map on Wed, 11 Feb 2015 13:45:41 GMT]]></title><description><![CDATA[<p>Dein Beispiel ist sehr verkürzt.<br />
Das ist zwar eigentlich gut, aber mir ist nicht ganz klar, was genau du brauchst.<br />
Deshalb schmeiss ich mal den Vorschlag in den Raum:</p>
<p>remove_if mit Lamda, was immer true zurück gibt und die Ausgabe macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442252</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 11 Feb 2015 13:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to unordered_map on Wed, 11 Feb 2015 13:52:04 GMT]]></title><description><![CDATA[<p>Ich denke du suchst sowas hier:</p>
<pre><code>for (auto iter = mymap.begin(); iter != mymap.end(); )
{
    std::cout &lt;&lt; iter-&gt;first &lt;&lt; &quot;: &quot; &lt;&lt; iter-&gt;second &lt;&lt; std::endl;

    if (removeBedingung)
        iter = mymap.erase(iter);
    else    
        ++iter;
}
</code></pre>
<p><code>unordered_map::erase(iter)</code> gibt einen Iterator auf den Nachfolger des gelöschten Elements zurück, mit dessen Hilfe man obiges Pattern umsetzen kann.</p>
<p>Gruss,<br />
Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442253</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Wed, 11 Feb 2015 13:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to unordered_map on Wed, 11 Feb 2015 17:07:59 GMT]]></title><description><![CDATA[<p>das konzept ist wie folgt:<br />
ich such nach den top 10 visited urls....die urls stehen in einem logfile (5GB)</p>
<p>- ich zaehle urls und fuege diese dafür in eine hashtable ein (unordered_map&lt;string, unsigned int&gt;)<br />
- dann erstelle ich einen min heap, welcher die top 10 visited urls beinhalten soll...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442288</guid><dc:creator><![CDATA[roggerr]]></dc:creator><pubDate>Wed, 11 Feb 2015 17:07:59 GMT</pubDate></item><item><title><![CDATA[Reply to unordered_map on Thu, 12 Feb 2015 12:14:00 GMT]]></title><description><![CDATA[<p>Statt min heap bietet sich partial_sort an. Und es sagt auch keiner, dass Du bei der Iteration gleich die Elemente löschen musst. Das ginge ja auch so:</p>
<pre><code class="language-cpp">vector&lt;string, size_t&gt; map2vec(unordered_map&lt;string, size_t&gt; const&amp; map) {
    vector&lt;pair&lt;string, size_t&gt;&gt; result;
    result.reserve(map.size());
    for (auto&amp; p: map) {
        result.push_back(p);
    }
    return result;
}
</code></pre>
<p>(ungetestete Skizze)</p>
<p>Idealerweise könnte man auch die URL Strings von der map in einen vector umziehen lassen. Die Map lässt sich aber, soweit ich das sehen kann, die Schlüssel da nicht rausmoven. Ich wüsste jedenfalls nicht wie. In Rust wär das jetzt schön einfach:</p>
<pre><code>let v: Vec&lt;_&gt; = mymap.into_iter().collect();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2442414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442414</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 12 Feb 2015 12:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to unordered_map on Thu, 12 Feb 2015 13:25:29 GMT]]></title><description><![CDATA[<p>ja, aber sagen wir es stehen 1mill elemente in der map und ich brauche die top 1k urls... speicher optimieren und das element von der map in den heap einfuegen, danach den map key loeschen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442435</guid><dc:creator><![CDATA[roggerr]]></dc:creator><pubDate>Thu, 12 Feb 2015 13:25:29 GMT</pubDate></item></channel></rss>