<?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[Intelligenere Lösung gesucht]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei klassen die auf unterschiedliche ids zurückgreifen<br />
die ich nicht verändern kann aber nutzen muss.</p>
<p>Im moment transformiere ich sie so:</p>
<pre><code class="language-cpp">...
else if (pid == ID_SHOW_INT)  return setup::id_int;
else if (pid == ID_SHOW_PAN)  return setup::id_pan;
else if (pid == ID_SHOW_PTG)  return setup::id_ptg;
...
// in die andere richtung
else if (pid == setup::id_int) return ID_SHOW_INT;
else if (pid == setup::id_pan) return ID_SHOW_PAN;
else if (pid == setup::id_ptg) return ID_SHOW_PTG;
</code></pre>
<p>Gibt es dafür eine intelligentere Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272430/intelligenere-lösung-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 21:14:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272430.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Aug 2010 14:38:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 14:38:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei klassen die auf unterschiedliche ids zurückgreifen<br />
die ich nicht verändern kann aber nutzen muss.</p>
<p>Im moment transformiere ich sie so:</p>
<pre><code class="language-cpp">...
else if (pid == ID_SHOW_INT)  return setup::id_int;
else if (pid == ID_SHOW_PAN)  return setup::id_pan;
else if (pid == ID_SHOW_PTG)  return setup::id_ptg;
...
// in die andere richtung
else if (pid == setup::id_int) return ID_SHOW_INT;
else if (pid == setup::id_pan) return ID_SHOW_PAN;
else if (pid == setup::id_ptg) return ID_SHOW_PTG;
</code></pre>
<p>Gibt es dafür eine intelligentere Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941059</guid><dc:creator><![CDATA[transorm_]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 14:44:33 GMT]]></title><description><![CDATA[<p>LUT? Switch-case?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941064</guid><dc:creator><![CDATA[lutsase]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:44:33 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 14:45:10 GMT]]></title><description><![CDATA[<p>switch</p>
<p>bzw. eben eine multimap bzw 2 maps.</p>
<p>aber nein, ich würde dafür ein simples switch nehmen (spart gegenüber dem if viel Schreibarbeit)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941066</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 14:57:20 GMT]]></title><description><![CDATA[<p>Je nach Umfang würde ich eine eigene Klasse bauen:</p>
<pre><code class="language-cpp">#include &lt;map&gt;

class IDConverter
{
   std::map&lt;int,int&gt;   PID2Setup;
   std::map&lt;int,int&gt;   Setup2PID;

public:
   void insert( int PID, int Setup )
   {
      PID2Setup[PID] = Setup;
      Setup2PIDSetup] = PID;
   }

   int PID( int Setup ) const
   {
      // ggf. Vorhandensein prüfen
      return Setup2PID[Setup];
   }

   int Setup( int PID ) const
   {
      // ggf. Vorhandensein prüfen
      return PID2Setup[PID];
   }
}
</code></pre>
<p>Möglicherweise bietet boost::multimap da eine bessere Lösung, die habe ich allerdings noch nicht eingesetzt und kann daher wenig dazu sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941072</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:57:20 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 15:05:51 GMT]]></title><description><![CDATA[<p>Kleiner Flüchtigkeitsfehler: operator[] funzt auf const maps nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941077</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 17 Aug 2010 15:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 15:47:43 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Kleiner Flüchtigkeitsfehler: operator[] funzt auf const maps nicht.</p>
</blockquote>
<p>Jau, das ist wohl so. Iteratoren und find() waren mir für die drei Zeilen zuviel Schreibarbeit <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/1941101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941101</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 17 Aug 2010 15:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 16:15:15 GMT]]></title><description><![CDATA[<p>at() sollte es tun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941112</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Tue, 17 Aug 2010 16:15:15 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 17:06:23 GMT]]></title><description><![CDATA[<p>transorm_ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
else if (pid == ID_SHOW_INT)  return setup::id_int;
else if (pid == ID_SHOW_PAN)  return setup::id_pan;
else if (pid == ID_SHOW_PTG)  return setup::id_ptg;
</code></pre>
<p>Gibt es dafür eine intelligentere Lösung?</p>
</blockquote>
<p>Stehen diese ID's für Werte ab 0 aufwärts? Dann löst ein gewöhnliches C-Array<br />
das Problem effizienter als Switch oder Map.</p>
<p>hth</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941136</guid><dc:creator><![CDATA[constX]]></dc:creator><pubDate>Tue, 17 Aug 2010 17:06:23 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Tue, 17 Aug 2010 17:14:26 GMT]]></title><description><![CDATA[<p>constX schrieb:</p>
<blockquote>
<p>transorm_ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
else if (pid == ID_SHOW_INT)  return setup::id_int;
else if (pid == ID_SHOW_PAN)  return setup::id_pan;
else if (pid == ID_SHOW_PTG)  return setup::id_ptg;
</code></pre>
<p>Gibt es dafür eine intelligentere Lösung?</p>
</blockquote>
<p>Stehen diese ID's für Werte ab 0 aufwärts? Dann löst ein gewöhnliches C-Array<br />
das Problem effizienter als Switch oder Map.</p>
<p>hth</p>
</blockquote>
<p>Danke erst einmal an alle Ideen.<br />
Die ids beginnen nicht mit Null haben keine Reihenfolge.<br />
Sind gewöhnliche unsigned int Werte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941139</guid><dc:creator><![CDATA[transform_]]></dc:creator><pubDate>Tue, 17 Aug 2010 17:14:26 GMT</pubDate></item><item><title><![CDATA[Reply to Intelligenere Lösung gesucht on Thu, 19 Aug 2010 15:01:37 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<p>at() sollte es tun</p>
</blockquote>
<p>Auch wenn der Thread jetzt schon zwei Tage alt ist, aber std::map hat kein at().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942065</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:01:37 GMT</pubDate></item></channel></rss>