<?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[Aus einer Referenz ein Zahlencode generieren.]]></title><description><![CDATA[<p>Hallihallo!</p>
<p>Ich bin gerade dabei eine Hashtable zu programmieren.<br />
Die Hashtable wird anhand 2 Klassentemplates (key, value) erstellt.<br />
So nun das Problem:</p>
<p>Ich habe meine Hashfunktion so geschrieben, dass sie davon ausgeht das der &quot;key&quot; ein numerischer Datentyp ist. Jedoch &quot;koennte&quot; es auch was anderes sein.</p>
<p>Daher meine Frage:<br />
Kann ich aus dem Key irgendeinen Code regenerieren, denn ich dann als &quot;int&quot; in die Hashfunktion uebergeben kann? Natürlich muss der Code je nachdem wie der key ist anders sein. Jeder Key muss natürlich beim generieren in der Int Zahl immer gleich bleiben.</p>
<p>Mfg Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322758/aus-einer-referenz-ein-zahlencode-generieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 15:43:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322758.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Jan 2014 21:39:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Sun, 05 Jan 2014 21:39:01 GMT]]></title><description><![CDATA[<p>Hallihallo!</p>
<p>Ich bin gerade dabei eine Hashtable zu programmieren.<br />
Die Hashtable wird anhand 2 Klassentemplates (key, value) erstellt.<br />
So nun das Problem:</p>
<p>Ich habe meine Hashfunktion so geschrieben, dass sie davon ausgeht das der &quot;key&quot; ein numerischer Datentyp ist. Jedoch &quot;koennte&quot; es auch was anderes sein.</p>
<p>Daher meine Frage:<br />
Kann ich aus dem Key irgendeinen Code regenerieren, denn ich dann als &quot;int&quot; in die Hashfunktion uebergeben kann? Natürlich muss der Code je nachdem wie der key ist anders sein. Jeder Key muss natürlich beim generieren in der Int Zahl immer gleich bleiben.</p>
<p>Mfg Marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375360</guid><dc:creator><![CDATA[Evilsadness]]></dc:creator><pubDate>Sun, 05 Jan 2014 21:39:01 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Sun, 05 Jan 2014 21:44:29 GMT]]></title><description><![CDATA[<p>Du willst also quasi eine Hashfunktion um die Hashfunktion zu füttern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375361</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 05 Jan 2014 21:44:29 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Sun, 05 Jan 2014 21:49:20 GMT]]></title><description><![CDATA[<blockquote>
<p>Kann ich aus dem Key irgendeinen Code regenerieren, denn ich dann als &quot;int&quot; in die Hashfunktion uebergeben kann? Natürlich muss der Code je nachdem wie der key ist anders sein. Jeder Key muss natürlich beim generieren in der Int Zahl immer gleich bleiben.</p>
</blockquote>
<p>Nennt sich Hash. Was sind das für Keys? Strings?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375364</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 05 Jan 2014 21:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Sun, 05 Jan 2014 21:59:27 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Du willst also quasi eine Hashfunktion um die Hashfunktion zu füttern?</p>
</blockquote>
<p>Jaein. Ich habe vorher die Bucksanzahl der Tabelle festgelegt und diese Hashfunktion entscheided dann nur lediglich anahnd des ints worein die Keys kommen. Klär koennte ich den Key in der Hashfunktion uebergeben und dort etwas generieren, bzw. dann entscheiden in welchen Buck es rein kommt.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Nennt sich Hash. Was sind das für Keys? Strings?</p>
</blockquote>
<p>Das soll ja vielfältig bleiben darum kann das alles mogliche sein. Zahlen, strings , andere Klassen etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375367</guid><dc:creator><![CDATA[Evilsadness]]></dc:creator><pubDate>Sun, 05 Jan 2014 21:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Sun, 05 Jan 2014 22:57:07 GMT]]></title><description><![CDATA[<p>Du wirst es dem Benutzer überlassen müssen, eine Hashfunktion für seinen Key-Typ bereitzustellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375389</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 05 Jan 2014 22:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Mon, 06 Jan 2014 02:30:34 GMT]]></title><description><![CDATA[<p>Evilsadness schrieb:</p>
<blockquote>
<p>Hallihallo!</p>
<p>Ich bin gerade dabei eine Hashtable zu programmieren.<br />
Die Hashtable wird anhand 2 Klassentemplates (key, value) erstellt.<br />
So nun das Problem:</p>
<p>Ich habe meine Hashfunktion so geschrieben, dass sie davon ausgeht das der &quot;key&quot; ein numerischer Datentyp ist. Jedoch &quot;koennte&quot; es auch was anderes sein.</p>
<p>Daher meine Frage:<br />
Kann ich aus dem Key irgendeinen Code regenerieren, denn ich dann als &quot;int&quot; in die Hashfunktion uebergeben kann? Natürlich muss der Code je nachdem wie der key ist anders sein. Jeder Key muss natürlich beim generieren in der Int Zahl immer gleich bleiben.</p>
<p>Mfg Marcel</p>
</blockquote>
<p>???</p>
<p>Also der Anwender gibt Dir einen int.</p>
<p>Es ist nicht unüblich, den erst *17 (oder so) zu rechnen, damit er noch noch gleicher verteilt. Du machst ja dann eh %size. Das *17 ist in Wirklichkeit Hasenpfeffer mit Schlangenöl.</p>
<p>Hashtables leben davon, daß der Anwender *gut* haschen kann. Kack auf die minderguten. Kannste nicht wirklich gut als Anwender hashen(mit Begründung), dann nimm einen Sortierbaum wie std::set. Ich bin ein Freund, sogar ein Fan von Hashtables. Aber echt *sehr selten* war mein Schatz spürbar schneller, tutmirleid.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375430</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 06 Jan 2014 02:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Mon, 06 Jan 2014 15:17:15 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Du wirst es dem Benutzer überlassen müssen, eine Hashfunktion für seinen Key-Typ bereitzustellen.</p>
</blockquote>
<p>Daran habe ich auch zuerst gedacht, jedoch dachte ich mir es gibt halt eine bestimmte möglichkeit aus referencen einen Int Wert zugenerieren.</p>
<p>Lassen wir mal die Hashtable aus dem Spiel.</p>
<p>Gibt es echt keinerlei &quot;Zahlencode&quot; den man aus Refernzen erzeugen kann? Ich habe es schon mit den Adressen versucht, jedoch hat es nicht so geklappt, wie ich das haben wollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375600</guid><dc:creator><![CDATA[Evilsadness]]></dc:creator><pubDate>Mon, 06 Jan 2014 15:17:15 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Mon, 06 Jan 2014 15:19:06 GMT]]></title><description><![CDATA[<p>Nein, nein. Du wendest einfach <code>std::hash</code> darauf an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375601</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 06 Jan 2014 15:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Mon, 06 Jan 2014 15:31:50 GMT]]></title><description><![CDATA[<blockquote>
<p>Daran habe ich auch zuerst gedacht, jedoch dachte ich mir es gibt halt eine bestimmte möglichkeit aus referencen einen Int Wert zugenerieren.</p>
</blockquote>
<p>Man holt sich die Adresse und hat seine Zahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375605</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 06 Jan 2014 15:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Mon, 06 Jan 2014 15:59:55 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>Daran habe ich auch zuerst gedacht, jedoch dachte ich mir es gibt halt eine bestimmte möglichkeit aus referencen einen Int Wert zugenerieren.</p>
</blockquote>
<p>Man holt sich die Adresse und hat seine Zahl.</p>
</blockquote>
<p>Was fuer hashes aber eine furchtbar schlechte idee ist.</p>
<p>Der User muss eine hash Funktion implementieren. Entweder per std::hash oder als functor im Template.</p>
<p>PS:<br />
generische Hashfunktionen sind soweit schrott. Lohnt sich also garnicht erst eine zu erfinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375618</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 06 Jan 2014 15:59:55 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Mon, 06 Jan 2014 17:46:52 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<blockquote>
<p>Man holt sich die Adresse und hat seine Zahl.</p>
</blockquote>
<p>Was fuer hashes aber eine furchtbar schlechte idee ist.</p>
</blockquote>
<p>Hatten wir in der Firma. Alle Adressen waren vom Heap und durch 8 teilbar, initial gab es 8 Buckets, die Hashfunktion war einfach modulo 8, vom Feinsten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375639</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 06 Jan 2014 17:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Tue, 07 Jan 2014 15:23:19 GMT]]></title><description><![CDATA[<blockquote>
<p>Was fuer hashes aber eine furchtbar schlechte idee ist</p>
</blockquote>
<p>Anwendungsbedingt. Habe das mal fuer Kollisionsereignisse zwischen Objekten genutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375828</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 07 Jan 2014 15:23:19 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Tue, 07 Jan 2014 16:53:47 GMT]]></title><description><![CDATA[<blockquote>
<p>Alle Adressen waren vom Heap und durch 8 teilbar, initial gab es 8 Buckets, die Hashfunktion war einfach modulo 8, vom Feinsten.</p>
</blockquote>
<p>Moment, die Hashfunktion war &quot;Adresse modulo 8&quot;? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375858</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 07 Jan 2014 16:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Tue, 07 Jan 2014 19:31:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Alle Adressen waren vom Heap und durch 8 teilbar, initial gab es 8 Buckets, die Hashfunktion war einfach modulo 8, vom Feinsten.</p>
</blockquote>
<p>Man nimmt also den pointer, generierst daraus das hash und um wieder an den pointer zu kommen, siehst man später in der hashtable nach, die auch noch furchtbar schnell ist, weil dank Alignment alle Werte den gleichen hash bekommen. Hat deine Firma noch weitere großartige Vorschläge, wie man noch mehr Geschwindigkit herausholen kann? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375879</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Tue, 07 Jan 2014 19:31:39 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Tue, 07 Jan 2014 22:30:42 GMT]]></title><description><![CDATA[<p>Marthog schrieb:</p>
<blockquote>
<p>Man nimmt also den pointer, generierst daraus das hash und um wieder an den pointer zu kommen,</p>
</blockquote>
<p>Soweit noch kein Problem, habe ich auch schon gemacht. Musste zu den Objekten noch ein wenig Zusatzinfo speichern, ohne die Objekte zu verändern. Wäre zum Beispiel denkbar für einen Debug-Heap.</p>
<p>Marthog schrieb:</p>
<blockquote>
<p>siehst man später in der hashtable nach, die auch noch furchtbar schnell ist, weil dank Alignment alle Werte den gleichen hash bekommen.</p>
</blockquote>
<p>Tja, mein *17 von der ersten Seite hätte es schon gelöst, vermutlich hätte sie dann sogar eine ganz besonders gute gleichverteilung auf die Buckets bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375931</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 07 Jan 2014 22:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Tue, 07 Jan 2014 22:44:14 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Marthog schrieb:</p>
<blockquote>
<p>siehst man später in der hashtable nach, die auch noch furchtbar schnell ist, weil dank Alignment alle Werte den gleichen hash bekommen.</p>
</blockquote>
<p>Tja, mein *17 von der ersten Seite hätte es schon gelöst,</p>
</blockquote>
<p>durchachtteilbar*17 ist aber wieder durch acht teilbar.</p>
<p>Darum ist es zu empfehlen, dass die Anzahl Buckets eine Primzahl ist. Ganz einfach weil so Effekte kaum zu vermeiden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375935</guid><dc:creator><![CDATA[iknowmath]]></dc:creator><pubDate>Tue, 07 Jan 2014 22:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Aus einer Referenz ein Zahlencode generieren. on Tue, 07 Jan 2014 23:01:01 GMT]]></title><description><![CDATA[<p>iknowmath schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Marthog schrieb:</p>
<blockquote>
<p>siehst man später in der hashtable nach, die auch noch furchtbar schnell ist, weil dank Alignment alle Werte den gleichen hash bekommen.</p>
</blockquote>
<p>Tja, mein *17 von der ersten Seite hätte es schon gelöst,</p>
</blockquote>
<p>durchachtteilbar*17 ist aber wieder durch acht teilbar.</p>
</blockquote>
<p>Stimmt auffallend, ihh, ist das böse.</p>
<p>iknowmath schrieb:</p>
<blockquote>
<p>Darum ist es zu empfehlen, dass die Anzahl Buckets eine Primzahl ist. Ganz einfach weil so Effekte kaum zu vermeiden sind.</p>
</blockquote>
<p>Ungern eine Division bezahle. Naja, wenn die Größe compilezeitkonstant ist, geht's ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375938</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 07 Jan 2014 23:01:01 GMT</pubDate></item></channel></rss>