<?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[Element mit 2 Keytypen]]></title><description><![CDATA[<p>Servus,</p>
<p>folgendes Problem: Ich habe Overlay* Element, die ich sowohl per Name als auch Order (int) speichern will.</p>
<p>Wie macht man das am besten?<br />
Im Moment halte ich die Element in 2 verschiedenen Maps:<br />
map&lt;string, Overlay*&gt; mOverlaysByName;<br />
map&lt;int, Overlay*&gt; mOverlaysByOrder;</p>
<p>Das doofe ist halt, dass ich alle Einfüge/Lösch etc Operationen immer auf 2 Maps habe. Ist mein Ansatz ok oder ginge das vielleicht besser (mit nur einer Struktur?)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296026/element-mit-2-keytypen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 05:11:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296026.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Nov 2011 14:45:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Element mit 2 Keytypen on Sat, 26 Nov 2011 14:45:39 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>folgendes Problem: Ich habe Overlay* Element, die ich sowohl per Name als auch Order (int) speichern will.</p>
<p>Wie macht man das am besten?<br />
Im Moment halte ich die Element in 2 verschiedenen Maps:<br />
map&lt;string, Overlay*&gt; mOverlaysByName;<br />
map&lt;int, Overlay*&gt; mOverlaysByOrder;</p>
<p>Das doofe ist halt, dass ich alle Einfüge/Lösch etc Operationen immer auf 2 Maps habe. Ist mein Ansatz ok oder ginge das vielleicht besser (mit nur einer Struktur?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2149197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2149197</guid><dc:creator><![CDATA[Struktuerr]]></dc:creator><pubDate>Sat, 26 Nov 2011 14:45:39 GMT</pubDate></item><item><title><![CDATA[Reply to Element mit 2 Keytypen on Sat, 26 Nov 2011 15:30:23 GMT]]></title><description><![CDATA[<p>Ich finde deinen Ansatz leicht fehleranfällig (man könnte versehentlich n Overlay* nur in eine map einfügen).</p>
<p>Ich glaube es wäre besser eine Klasse für sowas zu definieren. Dann kannst du, mit einem einfachen Methodenaufruf, Sachen in beide maps einfügen, löschen etc. Und dann kannst du noch 2 Getter-Methoden implementieren: eine für den Zugriff auf die Daten mittels Order und noch eine für den Zugriff per Name.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2149215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2149215</guid><dc:creator><![CDATA[c0ff33.alex]]></dc:creator><pubDate>Sat, 26 Nov 2011 15:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Element mit 2 Keytypen on Sat, 26 Nov 2011 17:08:34 GMT]]></title><description><![CDATA[<p>Dann verschiebe ich doch nur das Problem. In dieser Klasse hätte ich dann ja wieder 2 Maps...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2149264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2149264</guid><dc:creator><![CDATA[Struktuerr]]></dc:creator><pubDate>Sat, 26 Nov 2011 17:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Element mit 2 Keytypen on Sat, 26 Nov 2011 17:22:53 GMT]]></title><description><![CDATA[<p>Struktuerr schrieb:</p>
<blockquote>
<p>Dann verschiebe ich doch nur das Problem. In dieser Klasse hätte ich dann ja wieder 2 Maps...</p>
</blockquote>
<p>Du wirst auch nicht um zwei Maps herumkommen. Auch wenn du alles in eine Struktur packst, musst du weiterhin die Vergleichsfunktion angeben. Daher ist die Lösung <strong>natürlich</strong>, dir eine Klasse als Wrapper zu bauen. Und nein, du verschiebst das Problem damit nicht, da du so wesentlich weniger Code-Wiederholungen hast. Außerhalb der Klasse musst du nämlich nur noch mit einem Objekt arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2149277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2149277</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 26 Nov 2011 17:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to Element mit 2 Keytypen on Sat, 26 Nov 2011 20:05:07 GMT]]></title><description><![CDATA[<p>Naja, man kann schon um 2 maps rumkommen, wenn man den o(log n) zugriff nur für einen keytype braucht. Den anderen kann man dann halt mit o(n) holen. oder man macht name/id voneinander abhängig, dann kann man das eine ins andere umrechnen.</p>
<p>Bei dem wrapper ist das Problem, das man ebenso eine identifizierung name&lt;-&gt; id braucht, um die beiden maps mit O(log n) synchron zu halten. Wenn das Overlay* das eh weiß, ist es kein Problem, ist aber denk ich unüblich.</p>
<p>Persönlich würd ich auch erstmal n wrapper schreiben, das macht wohl langfristig einfach viel weniger kopfzerbrechen.</p>
<p>Vorschlag:</p>
<pre><code class="language-cpp">struct OverlayInt {
Overlay* ov;
int id;
};
struct OverlayName {
Overlay* ov;
string name;
};
class OverlayWrap {
map&lt;string, OverlayInt&gt; nameMap;
map&lt;int, OverlayName&gt; idMap;
public:
//...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2149343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2149343</guid><dc:creator><![CDATA[kleiner Troll]]></dc:creator><pubDate>Sat, 26 Nov 2011 20:05:07 GMT</pubDate></item></channel></rss>