<?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[Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ?]]></title><description><![CDATA[<p>Hallo,<br />
ich brauche eine Hash Map um dort dynamisch, in einer Schleife, Objekte zu speichern und sie anhand ihrer ID schnell wieder zu finden. Dafür habe ich mich ein Bisschen eingelesen und</p>
<pre><code class="language-cpp">#include &lt;boost/unordered_map.hpp&gt;
</code></pre>
<p>ausgewählt. Gibt es eine bessere Lösung?<br />
Jetzt möchte ich Objekte der Klasse</p>
<pre><code class="language-cpp">#include &quot;Junction.h&quot;
</code></pre>
<p>dort speichern:</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction&gt; map;
map jhashmap;

(oder typedef boost::unordered_map&lt;int, &amp;Junction&gt; map; ???)
</code></pre>
<p>Da ich noch ein blutiger Anfänger bin, weiß ich nicht genau wie ich dort ein Objekt speichern kann (das soll beliebig oft wiederholt werden können):</p>
<pre><code class="language-cpp">int id; float x, y;
Junction *new_junc = new Junction(id, x, y);
jhashmap[id] = new_junc;

(oder jhashmap[id] = Junction(id, x, y);)
</code></pre>
<p>Geht das überhaupt? Wie mach ich das richtig?<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259075/brauche-eine-hashmap-um-objekte-schnell-zu-finden-z-b-unordered_map</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 20:24:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259075.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Jan 2010 19:39:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Mon, 18 Jan 2010 19:44:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich brauche eine Hash Map um dort dynamisch, in einer Schleife, Objekte zu speichern und sie anhand ihrer ID schnell wieder zu finden. Dafür habe ich mich ein Bisschen eingelesen und</p>
<pre><code class="language-cpp">#include &lt;boost/unordered_map.hpp&gt;
</code></pre>
<p>ausgewählt. Gibt es eine bessere Lösung?<br />
Jetzt möchte ich Objekte der Klasse</p>
<pre><code class="language-cpp">#include &quot;Junction.h&quot;
</code></pre>
<p>dort speichern:</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction&gt; map;
map jhashmap;

(oder typedef boost::unordered_map&lt;int, &amp;Junction&gt; map; ???)
</code></pre>
<p>Da ich noch ein blutiger Anfänger bin, weiß ich nicht genau wie ich dort ein Objekt speichern kann (das soll beliebig oft wiederholt werden können):</p>
<pre><code class="language-cpp">int id; float x, y;
Junction *new_junc = new Junction(id, x, y);
jhashmap[id] = new_junc;

(oder jhashmap[id] = Junction(id, x, y);)
</code></pre>
<p>Geht das überhaupt? Wie mach ich das richtig?<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1840975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1840975</guid><dc:creator><![CDATA[sugarray21]]></dc:creator><pubDate>Mon, 18 Jan 2010 19:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Tue, 19 Jan 2010 09:14:13 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich glaub du meinst das so oder?</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction*&gt; map;
map jhashmap;

/**************/

int id; float x, y;
// ich geh mal davon aus das id an dieser Stelle dann einen Wert hat
Junction *new_junc = new Junction(id, x, y);
jhashmap[id] = new_junc;
// oder
jhashmap[id] = new Junction(id, x, y);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1841179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841179</guid><dc:creator><![CDATA[Peppie]]></dc:creator><pubDate>Tue, 19 Jan 2010 09:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Tue, 19 Jan 2010 09:42:04 GMT]]></title><description><![CDATA[<p>Gibts nen Grund die Junctions dynamisch zu erzeugen? (z.B. wegen Polymorphie)</p>
<p>sonst:</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction&gt; map;
map jhashmap;

int id; float x, y;
Junction junc(id, x, y);
jhashmap[id] = junc;
// oder
jhashmap[id] = Junction(id, x, y);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1841195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841195</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Jan 2010 09:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Tue, 19 Jan 2010 10:16:21 GMT]]></title><description><![CDATA[<p>Gibt es einen Grund dafuer, nicht die HashMap aus dem TR1 zu nehmen, sondern eine zusaetzliche Abhaengigkeit zu boost aufzubauen? Siehe <em>std::tr1::unordered_map</em>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841231</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 19 Jan 2010 10:16:21 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Tue, 19 Jan 2010 11:29:55 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Gibt es einen Grund dafuer, nicht die HashMap aus dem TR1 zu nehmen, sondern eine zusaetzliche Abhaengigkeit zu boost aufzubauen? Siehe <em>std::tr1::unordered_map</em>...</p>
</blockquote>
<p>Ob jetzt tr1, den auch nicht jeder Compiler hat, oder boost, was eh quasi jeder irgendwann installiert hat, um die zusätzliche Abhängigkeit kommt man nicht drumrum. Die unordered_map ist die gleiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841303</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 19 Jan 2010 11:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Tue, 19 Jan 2010 11:41:20 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Ob jetzt tr1, den auch nicht jeder Compiler hat, oder boost, was eh quasi jeder irgendwann installiert hat, um die zusätzliche Abhängigkeit kommt man nicht drumrum. Die unordered_map ist die gleiche.</p>
</blockquote>
<p>Ich schreibe auch gerade eine kleine Bibliothek, bei der ich bewusst nur Funktionalität aus TR1 und kein Boost einsetze, weil eben ein relativ grosser Teil der Benutzer Boost wahrscheinlich nicht haben wird. Da ich eigentlich nur <code>function</code> , <code>bind</code> , <code>shared_ptr</code> und <code>array</code> benötige, ist das auch relativ gut möglich. Allerdings merke ich, dass mir Dinge wie <code>BOOST_FOREACH</code> fehlen...</p>
<p>Aber sonst (besonders wenn man ein Projekt für sich selbst macht) spielt es wirklich keine grosse Rolle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841307</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 19 Jan 2010 11:41:20 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Thu, 21 Jan 2010 19:01:04 GMT]]></title><description><![CDATA[<p>Danke an Alle!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9353">@Peppie</a> ja die sind gesetzt.<br />
genau so hab ich auch gelöst.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a> ich parse eine xml datei.<br />
Die Anzahl an Junction ist nicht bekannt, kann man es anders machen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21632">@knivil</a>,pumuckl,Nexus<br />
ich benutze sowieso eine Vielzahl an Boost Bibliotheken.<br />
Gibt es einen Unterschied was man inkludiert?<br />
Von der Funktionalität her sind die doch gleich oder nicht?<br />
Es wird nur an einigen Rechnern installiert, die dafür konfiguriert werden.</p>
<p>@all wo liegt denn der große Unterschied wie man das jetzt macht:</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction*&gt; map;
map jhashmap;
...
int id; float x, y; // werden gesetzt
jhashmap[id] = new Junction(id, x, y);
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">typedef boost::unordered_map&lt;int, Junction&gt; map;
map jhashmap;
...
int id; float x, y; // werden gesetzt
jhashmap[id] = Junction(id, x, y);
</code></pre>
<p>??? ich weiß, dass die erste Version Pointer speichert.<br />
Was speichert denn die 2. Referenzen? (ne oder?)<br />
Speicherverbrauch? Was nimmt man normalerweise?<br />
Vielen Dank im voraus!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842828</guid><dc:creator><![CDATA[sugarray21]]></dc:creator><pubDate>Thu, 21 Jan 2010 19:01:04 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Thu, 21 Jan 2010 19:47:42 GMT]]></title><description><![CDATA[<p>Wenn deine Klasse 'Junktion' nicht sehr groß ist und sich einfach kopieren läßt, dann würde ich dir raten, die 2. Version zu nehmen.<br />
Und zu deiner Frage dazu: diese speichert einfach das Objekt (anstatt eines Zeigers) - und daher ist es auch nötig, daß es sich kopieren läßt (der Kopier-Konstruktor sowie der Zuweisungsoperator werden ja standardmäßig vom Compiler erzeugt).</p>
<p>Bei Zeigern hast du immer den Nachteil, daß du selber wieder für die Speicherfreigabe verantwortlich bist, d.h. beim Löschen von Elementen mußt du dann explizit 'delete' für das Element aufrufen. Daher verwendet man in dem Fall dann auch besser boost::shared_ptr (bzw. aus TR1), da sich diese Klasse selber um die Freigabe kümmert. Dies sähe dann so aus:</p>
<pre><code class="language-cpp">boost::unordered_map&lt;int, boost::shared_ptr&lt;Junction&gt; &gt;
</code></pre>
<p>Aber wie schon oben geschrieben, benutze besser die 2. Variante, d.h.</p>
<pre><code class="language-cpp">boost::unordered_map&lt;int, Junction&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1842871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842871</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 21 Jan 2010 19:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Thu, 21 Jan 2010 20:13:32 GMT]]></title><description><![CDATA[<p>Hi Th69,<br />
die Klasse 'Junktion' ist doch nicht so groß?<br />
Also habe ich jetzt die 2. Variante genommen, mit der die Objekte kopiert werden.<br />
Iterieren über die komplette Hash klappt schon mal ganz gut, dank BOOST_FOREACH.<br />
Wie suche ich jetzt effizient nach einzelnen Werten?</p>
<pre><code class="language-cpp">for (IterE = EdgeList.begin(); IterE != EdgeList.end(); ++IterE) {

   hashmap::const_iterator j_iter = junction_map.find(IterE-&gt;getFrom());

   if (j_iter != junction_map.end()) {
     cout &lt;&lt; typeid ((*j_iter).second).name() &lt;&lt; endl;
     cout &lt;&lt; (*j_iter).second; // operator &lt;&lt; für die Klasse Junktion ist überladen und gibt alles aus.
     cout &lt;&lt; ((Junction)(*j_iter).second).getId() &lt;&lt; endl;
     } else
        cout &lt;&lt; &quot;Junction not found!&quot; &lt;&lt; endl;
   }
</code></pre>
<p>In dem Beispiel läuft alles.<br />
Ist das so State of the Art ? oder gibt es bessere Methoden?<br />
Vielen Dank an alle!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842902</guid><dc:creator><![CDATA[sugarray21]]></dc:creator><pubDate>Thu, 21 Jan 2010 20:13:32 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Sun, 24 Jan 2010 12:04:41 GMT]]></title><description><![CDATA[<p>kann mir vllt noch jemand die letzte Frage beantworten?<br />
(siehe mein Post davor.) Vielen Dank im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1843985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1843985</guid><dc:creator><![CDATA[sugarray21]]></dc:creator><pubDate>Sun, 24 Jan 2010 12:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Sun, 24 Jan 2010 12:15:51 GMT]]></title><description><![CDATA[<p>Das ist Highend-Super-State of the Art! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1843990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1843990</guid><dc:creator><![CDATA[Bruuuust]]></dc:creator><pubDate>Sun, 24 Jan 2010 12:15:51 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Sun, 24 Jan 2010 13:59:00 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Gibt es einen Grund dafuer, nicht die HashMap aus dem TR1 zu nehmen, sondern eine zusaetzliche Abhaengigkeit zu boost aufzubauen? Siehe <em>std::tr1::unordered_map</em>...</p>
</blockquote>
<p>Boost zu benutzen, ist gar keine so blöde Idee, finde ich -- zumal MSVC und G++ sich nicht einigen konnten ( <code>&lt;unordered_map&gt;</code> versus <code>&lt;tr1/unordered_map&gt;</code> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844036</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 24 Jan 2010 13:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche eine HashMap um Objekte schnell zu finden. z.B unordered_map ? on Sun, 24 Jan 2010 15:06:20 GMT]]></title><description><![CDATA[<p>Mit boost kann man auch die Kompilezeit verzehnfachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844072</guid><dc:creator><![CDATA[FachmannFürBoost]]></dc:creator><pubDate>Sun, 24 Jan 2010 15:06:20 GMT</pubDate></item></channel></rss>