<?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[Hashwert berechnen]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich habe verschiedene Objekte, die alle eine ID zwischen 1 und 1000 haben. Manche Objekte haben auch mehrere IDs; Nun moechte ich alle Objekte mit gleichen IDs in eine Map (map&lt;int, vector&lt;Object&gt;&gt;) stecken, z.B:<br />
map[20] = hier sind alle Objekte mit ID 20 drinnen<br />
map[891] = hier sind alle Objekte mit ID 891 drinnen<br />
map[??] = hier sind alle Objekte mit IDs 108 und 33 drinnen<br />
...<br />
Die Frage ist, wie bringe ich Objekte mit mehreren IDs in einen Mapslot. Addieren geht ja nicht, denn dann wuerden z.B. die Objekte mit der ID 100 in den selben Map Slot kommen wie Objekten die 2 IDs mit den Werten 40 und 60 haben.</p>
<p>Wie koennte man das machen in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286139/hashwert-berechnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 00:50:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286139.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 May 2011 08:27:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hashwert berechnen on Wed, 04 May 2011 08:27:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich habe verschiedene Objekte, die alle eine ID zwischen 1 und 1000 haben. Manche Objekte haben auch mehrere IDs; Nun moechte ich alle Objekte mit gleichen IDs in eine Map (map&lt;int, vector&lt;Object&gt;&gt;) stecken, z.B:<br />
map[20] = hier sind alle Objekte mit ID 20 drinnen<br />
map[891] = hier sind alle Objekte mit ID 891 drinnen<br />
map[??] = hier sind alle Objekte mit IDs 108 und 33 drinnen<br />
...<br />
Die Frage ist, wie bringe ich Objekte mit mehreren IDs in einen Mapslot. Addieren geht ja nicht, denn dann wuerden z.B. die Objekte mit der ID 100 in den selben Map Slot kommen wie Objekten die 2 IDs mit den Werten 40 und 60 haben.</p>
<p>Wie koennte man das machen in C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058249</guid><dc:creator><![CDATA[Hasher2]]></dc:creator><pubDate>Wed, 04 May 2011 08:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to Hashwert berechnen on Wed, 04 May 2011 08:47:22 GMT]]></title><description><![CDATA[<p>Wenn ein Objekt mehrere IDs haben kann, dann ist ein einzelner int wohl nicht der geeignete Typ für die ID. Eher so etwas wie vector&lt;int&gt; oder set&lt;int&gt;. Und das wäre für reines funktionieren auch schon ausreichend. Sieh das aber nur als Anregung: Da du ein bisschen besser weißt, wie das bei dir mit den IDs läuft, kannst du gewiss einen besseren Datentyp finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058259</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 May 2011 08:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Hashwert berechnen on Wed, 04 May 2011 19:12:05 GMT]]></title><description><![CDATA[<p>Was auch immer du vor hast, es hört sich verdächtig falsch ein.</p>
<pre><code class="language-cpp">map&lt;int, vector&lt;Object&gt;&gt; 
// wäre besser
multimap&lt;int, Object&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2058639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058639</guid><dc:creator><![CDATA[nurf]]></dc:creator><pubDate>Wed, 04 May 2011 19:12:05 GMT</pubDate></item><item><title><![CDATA[Reply to Hashwert berechnen on Thu, 05 May 2011 08:35:04 GMT]]></title><description><![CDATA[<ol>
<li>
<p>Multimap hört sich tatsächlich besser and.</p>
</li>
<li>
<p>Entweder packst du die Objekte mit mehreren IDs in den Bucket mit der niedrigsten ihrer IDs (als das Objekt mit 20 und 80 in den Bucket für ID 20 usw.)</p>
</li>
<li>
<p>Oder du packst in die (multi-)Map nicht die Objkete selbst, sondern Pointer darauf. Dann kannst du zu Objekten mit mehreren IDs in jedem passenden bucket einen Pointer darauf speichern.</p>
</li>
<li>
<p>Oder du machst es mit einer rekursiven Struktur:</p>
</li>
</ol>
<pre><code class="language-cpp">struct Bucket : public std::pair&lt;vector&lt;Object&gt;, std::map&lt;int, Bucket&gt; &gt; {};

map&lt;int, Bucket&gt; myMap;
</code></pre>
<p>Wenn du ein Objekt mit einer ID hast, kommt es im entsprechenden Bucket in den vector des pair. Wenns eine weitere ID hat, kommts statt dessen in die map des pair. Dort wird in der Map nach der zweiten ID der passende Bucket gesucht, dort kommt es dann in den vector oder, wenn noch mehr IDs da sind in die Map...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058831</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 05 May 2011 08:35:04 GMT</pubDate></item><item><title><![CDATA[Reply to Hashwert berechnen on Thu, 05 May 2011 09:23:39 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<ol start="4">
<li>Oder du machst es mit einer rekursiven Struktur:</li>
</ol>
<pre><code class="language-cpp">struct Bucket : public std::pair&lt;vector&lt;Object&gt;, std::map&lt;int, Bucket&gt; &gt; {};

map&lt;int, Bucket&gt; myMap;
</code></pre>
<p>Wenn du ein Objekt mit einer ID hast, kommt es im entsprechenden Bucket in den vector des pair. Wenns eine weitere ID hat, kommts statt dessen in die map des pair. Dort wird in der Map nach der zweiten ID der passende Bucket gesucht, dort kommt es dann in den vector oder, wenn noch mehr IDs da sind in die Map...</p>
</blockquote>
<p>Wegen solcher Einfälle muß ich immer ein Backup machen, bevor ich bekifft programmiere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058850</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 05 May 2011 09:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Hashwert berechnen on Thu, 05 May 2011 12:52:52 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Wegen solcher Einfälle muß ich immer ein Backup machen, bevor ich bekifft programmiere.</p>
</blockquote>
<p>Jup, so ganz ernst war das auch nicht gemeint. Hätt ich auch nie gemacht, weils hieße, auf halber Strecke stehen zu bleiben. Ich hätte natürlich den Bucket als Template implementiert, mit einem Zähler für die Rekursionstiefe als Templateargument. Nachts gegen drei wäre es fertig gewesen, am nächsten Morgen um 7 hätte ich den Wecker und meine Einfälle verflucht und abends dann das Backup eingespielt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2058963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2058963</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 05 May 2011 12:52:52 GMT</pubDate></item></channel></rss>