<?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[Maps]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine Map erstellen, allerdings nicht, dass der Key ein String ist und der Valuewert ein Integer, sondern dies mischen.<br />
So würde ich ja eine Map anlegen</p>
<pre><code>map&lt;string, int&gt; map_
</code></pre>
<p>Ich möchte aber, dass Keys zahlen und Zeichen sein können, ebenso bei den Values.</p>
<p>Jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305348/maps</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 23:11:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305348.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Jun 2012 19:42:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 19:42:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine Map erstellen, allerdings nicht, dass der Key ein String ist und der Valuewert ein Integer, sondern dies mischen.<br />
So würde ich ja eine Map anlegen</p>
<pre><code>map&lt;string, int&gt; map_
</code></pre>
<p>Ich möchte aber, dass Keys zahlen und Zeichen sein können, ebenso bei den Values.</p>
<p>Jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227520</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:42:01 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 19:54:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;map&gt;

using namespace std;

class SuperMap
{
    private:
        map&lt;string, int&gt; mapStr;
        map&lt;int, string&gt; mapInt;

    public:
        int &amp;operator[](const string &amp;key)
        {
            return mapStr[key];
        }

        string &amp;operator[](const int &amp;key)
        {
            return this-&gt;mapInt[key];
        }
};

using namespace std;

int main()
{
    SuperMap map;

    map[0] = &quot;Hallo&quot;;
    map[&quot;test&quot;] = 1337;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227522</guid><dc:creator><![CDATA[Mapper]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 19:56:43 GMT]]></title><description><![CDATA[<p>Ups, hab das ein bisschen zu flüchtig gemacht. Merk ich z. B. daran, dass ein mal this-&gt; fehlt und der int unnötigerweise per Referenz übergeben wird. Das Prinzip sollte aber klar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227524</guid><dc:creator><![CDATA[Mapper]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 19:59:20 GMT]]></title><description><![CDATA[<p>Ah, ich muss also für jeden Fall eine Map anlegen, dachte man kann es irgendwie &quot;einfacher&quot; gestalten.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227525</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:59:20 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 20:02:32 GMT]]></title><description><![CDATA[<p>KeinNameMehrFrei schrieb:</p>
<blockquote>
<p>Ah, ich muss also für jeden Fall eine Map anlegen, dachte man kann es irgendwie &quot;einfacher&quot; gestalten.</p>
<p>Danke</p>
</blockquote>
<p>Das ist nur eine Idee von mir. Glaube, dass es da von Boost was gibt, aber da du meintest, dass du es für int/string brauchst, dachte ich, dass diese Lösung genügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227526</guid><dc:creator><![CDATA[Genüger]]></dc:creator><pubDate>Tue, 26 Jun 2012 20:02:32 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 20:07:56 GMT]]></title><description><![CDATA[<p>Brauch es auch nur für int und String.</p>
<p>Ich hab 4 Fälle:<br />
&lt;int, string&gt;<br />
&lt;string, int&gt;<br />
&lt;string, string&gt;<br />
&lt;int, int&gt;</p>
<p>Mit Boost möchte ich (noch) nicht arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227528</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 20:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 20:08:54 GMT]]></title><description><![CDATA[<p>Du kannst natürlich auch Templates verwenden, sodass du es für beliebige Typen-Kombinationen verwenden kannst:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;map&gt;

using namespace std;

template &lt;typename T, typename U&gt;
class SuperMap
{
    private:
        map&lt;T, U&gt; mapT;
        map&lt;U, T&gt; mapU;

    public:
        U &amp;operator[](const T &amp;key)
        {
            return this-&gt;mapT[key];
        }

        T &amp;operator[](U key)
        {
            return this-&gt;mapU[key];
        }
};

using namespace std;

int main()
{
    SuperMap&lt;int, string&gt; foo;

    foo[&quot;test&quot;] = 0;
    foo[0] = &quot;test&quot;;

    SuperMap&lt;float, int&gt; foo2;

    foo2[0.111f] = 1234;
    foo2[0] = 12.34f;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227530</guid><dc:creator><![CDATA[Templater]]></dc:creator><pubDate>Tue, 26 Jun 2012 20:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 20:27:06 GMT]]></title><description><![CDATA[<p>Ah, das ist eine viel schönere Lösung, als 4 verschiedene Maps anzulegen,<br />
allerdings habe ich ein Problem beim anlegen einer neuen Map in der Main.</p>
<p>Ich erzeuge eine mit</p>
<pre><code>MapDictionary&lt;int, string&gt; maptest;
</code></pre>
<p>Dann sagt der Compiler aber, dass int und String unzulässige Typnamen sind?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227541</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 20:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 20:30:24 GMT]]></title><description><![CDATA[<p>Allerdings findet er angeblich auch kein cin und cout.. Obwohl ich</p>
<pre><code>using namespace std;
</code></pre>
<p>benutze..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227542</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 20:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 20:58:34 GMT]]></title><description><![CDATA[<p>Für std::cin/std::cout brauchst du den Header <em>iostream</em>. Für std::string brauchst du den Header <em>string</em>. Zeig doch mal deinen Code...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227560</guid><dc:creator><![CDATA[namespacer]]></dc:creator><pubDate>Tue, 26 Jun 2012 20:58:34 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:21:04 GMT]]></title><description><![CDATA[<p>Mapper schrieb:</p>
<blockquote>
<p>Ups, hab das ein bisschen zu flüchtig gemacht. Merk ich z. B. daran, dass ein mal this-&gt; fehlt und der int unnötigerweise per Referenz übergeben wird. Das Prinzip sollte aber klar sein.</p>
</blockquote>
<p>Da fehlt kein <code>this-&gt;</code> (eins zuviel).<br />
Was der TE sucht, ist** <code>boost::bimap</code> **.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227569</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:23:12 GMT]]></title><description><![CDATA[<pre><code>//header
#ifndef Uebung9.3_h
#define Uebung9.3_h

#include &lt;string&gt;
#include &lt;map&gt; 

using namespace std;
template &lt;typname T, typname U&gt;

class MapDictionary {

private:
        map&lt;T, U&gt; mapT;
        map&lt;U, T&gt; mapU;

public:
        U &amp;operator[](const T &amp;key)
        {
            return this-&gt;mapT[key];
        }

        T &amp;operator[](U key)
        {
            return this-&gt;mapU[key];
        }
}

#endif
</code></pre>
<pre><code>#include &quot;Uebung9.3.h&quot;

using std::map;
using std::cout;
using std::string;
using std::cin;
using std::endl;
//using namespace std;

int main()
{
	MapDictionary&lt;int, string&gt; maptest;

	maptest[&quot;eydu&quot;] = 15487;
	maptest[815] = &quot;geheim&quot;;
	maptest[10105588799] = 8234;
	maptest[&quot;visa&quot;] = &quot;hallo&quot;;

	string key;
	/*cout &lt;&lt; &quot;Key = &quot;;
	cin &gt;&gt; key;

	map &lt;int, string&gt;::iterator it;
	it = maptest.find(key);

	if (it != maptest.end())
	{
		cout &lt;&lt; &quot;Key: &quot; &lt;&lt; it-&gt;first &lt;&lt; &quot; Vaule: &quot; &lt;&lt; it-&gt;second &lt;&lt; endl;
	}*/
}
</code></pre>
<p>Hab den Rest extra auskommentiert, weil anscheinend die std::map Sachen auch nicht erkannt werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227570</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:24:14 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Mapper schrieb:</p>
<blockquote>
<p>Ups, hab das ein bisschen zu flüchtig gemacht. Merk ich z. B. daran, dass ein mal this-&gt; fehlt und der int unnötigerweise per Referenz übergeben wird. Das Prinzip sollte aber klar sein.</p>
</blockquote>
<p>Da fehlt kein <code>this-&gt;</code> (eins zuviel).</p>
</blockquote>
<p>Wo is da eins zu viel?</p>
<p>Hacker schrieb:</p>
<blockquote>
<p>Was der TE sucht, ist** <code>boost::bimap</code> **.</p>
</blockquote>
<p>Nein, er will ja vorerst kein Boost:</p>
<p>KeinNameMehrFrei schrieb:</p>
<blockquote>
<p>Mit Boost möchte ich (noch) nicht arbeiten.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2227571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227571</guid><dc:creator><![CDATA[booster]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:28:32 GMT]]></title><description><![CDATA[<p>booster schrieb:</p>
<blockquote>
<p>Nein, er will ja vorerst kein Boost:</p>
<p>KeinNameMehrFrei schrieb:</p>
<blockquote>
<p>Mit Boost möchte ich (noch) nicht arbeiten.</p>
</blockquote>
</blockquote>
<p>Glatt übersehen <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="😃"
    /><br />
<code>this-&gt;</code> ist völlig unnötig, außer lokale Variablen haben den gleichen Identifier wie eine deiner Member.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227573</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:28:24 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p><code>this-&gt;</code> ist völlig unnötig.</p>
</blockquote>
<p>Geschmackssacke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227574</guid><dc:creator><![CDATA[feinschmecker]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:29:26 GMT]]></title><description><![CDATA[<p>feinschmecker schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p><code>this-&gt;</code> ist völlig unnötig.</p>
</blockquote>
<p>Geschmackssacke.</p>
</blockquote>
<p>Aber kein Muss. Deswegen ist die Aussage &quot;da muss noch ein this-&gt; hin&quot; falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227575</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:32:43 GMT]]></title><description><![CDATA[<p>Ob this oder nicht, das ist ja hier jetzt nicht das Problem <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/2227579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227579</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:32:53 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>feinschmecker schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p><code>this-&gt;</code> ist völlig unnötig.</p>
</blockquote>
<p>Geschmackssacke.</p>
</blockquote>
<p>Aber kein Muss. Deswegen ist die Aussage &quot;da muss noch ein this-&gt; hin&quot; falsch.</p>
</blockquote>
<p>Gegenteiliges hab ich auch nie behauptet. Ich hab nur gesagt, dass da ein &quot;this-&gt;&quot; fehlt, was ich auf meinen Beitrag bezogen hab, weil ich es ein mal hin geschrieben und beim anderen aus Versehen vergessen hab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227580</guid><dc:creator><![CDATA[verseher]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:34:44 GMT]]></title><description><![CDATA[<p>Gut gut, schon verstanden. Zurück zum Thema - oder besser gesagt zu seinem Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227581</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:47:10 GMT]]></title><description><![CDATA[<p>Schön <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="😃"
    /><br />
Der, falls es nicht bemerkt wurde, bereits gepostet wurde <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/2227589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227589</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:50:15 GMT]]></title><description><![CDATA[<p>Jo, du inkludierst natürlich nicht <code>&lt;iostream&gt;</code> .<br />
Vergiss übrigens nicht, dass beide Maps in MapDictionary unabhängig von einander existieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227590</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Tue, 26 Jun 2012 21:55:53 GMT]]></title><description><![CDATA[<p>Ja, hatte es mit Map schon bemerkt..</p>
<p>Danke, natürlich war es (mal wieder) iostream. <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/2227592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227592</guid><dc:creator><![CDATA[KeinNameMehrFrei]]></dc:creator><pubDate>Tue, 26 Jun 2012 21:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Wed, 27 Jun 2012 09:19:01 GMT]]></title><description><![CDATA[<p>KeinNameMehrFrei schrieb:</p>
<blockquote>
<p>Brauch es auch nur für int und String.</p>
<p>Ich hab 4 Fälle:<br />
&lt;int, string&gt;<br />
&lt;string, int&gt;<br />
&lt;string, string&gt;<br />
&lt;int, int&gt;</p>
</blockquote>
<p>Jetzt würde mich dochmal die Aufgabenstellung interessieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227680</guid><dc:creator><![CDATA[Aufgabe 9.3]]></dc:creator><pubDate>Wed, 27 Jun 2012 09:19:01 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Wed, 27 Jun 2012 11:38:16 GMT]]></title><description><![CDATA[<p>Theoretisch würde ich sowas nehmen:</p>
<pre><code class="language-cpp">template&lt;typename key1T, typename key2T&gt;
struct bimap
{
        typedef std::vector&lt;std::pair&lt;key1T, key2T&gt;&gt; array_type;
        array_type array;

        typename array_type::iterator find(key2T tof)
        {
                typename array_type::iterator iter = array.begin();
                for(;iter != array.end();++iter)
                        if(iter-&gt;second == tof)
                                break;

                return iter;
        }

        typename array_type::iterator find(key1T tof)
        {
                typename array_type::iterator iter = array.begin();
                for(;iter != array.end();++iter)
                        if(iter-&gt;first == tof)
                                break;

                return iter;
        }

        key1T&amp; operator[](key2T a)
        {
                typename array_type::iterator iter;
                if((iter = find(a)) != array.end())
                        return iter-&gt;first;

                array.push_back(std::make_pair(key1T(), a));
                return array.back().first;
        }
        key2T&amp; operator[](key1T a)
        {
                typename array_type::iterator iter;
                if((iter = find(a)) != array.end())
                        return iter-&gt;second;

                array.push_back(std::make_pair(a, key2T()));
                return array.back().second;
        }
};
</code></pre>
<p>Nur ist halt das Problem, dass es nicht reguläre Memberfunktionen wie in einer <code>std::map</code> gibt... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
Aufgabe für heute gefunden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227716</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 27 Jun 2012 11:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Wed, 27 Jun 2012 13:09:31 GMT]]></title><description><![CDATA[<p>.. und das es ziemlich langsamer pfusch ist.. <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/2227742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227742</guid><dc:creator><![CDATA[daki]]></dc:creator><pubDate>Wed, 27 Jun 2012 13:09:31 GMT</pubDate></item><item><title><![CDATA[Reply to Maps on Wed, 27 Jun 2012 15:11:36 GMT]]></title><description><![CDATA[<p>daki schrieb:</p>
<blockquote>
<p>.. und das es ziemlich langsamer pfusch ist.. <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>
</blockquote>
<p>Na wenn du das gleich so sagst... machs besser ( :Herausforderung: ) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Ich bin soweit fertig (unimplementierte Funktionen sind ja durch das Set verfügbar, und da das nur ein Wrapper um ein Set ist...).</p>
<pre><code class="language-cpp">template&lt;typename leftKeyT, typename rightKeyT&gt;
class bimap
{
public:

        typedef std::pair&lt;leftKeyT, rightKeyT&gt; value_type;
        typedef std::set&lt;value_type&gt; array_type;

        array_type mSet;///Internal array (set)

        typedef leftKeyT left_key_type;
        typedef rightKeyT right_key_type;

        typedef typename array_type::iterator iterator;
        typedef typename array_type::const_iterator const_iterator;
        typedef typename array_type::size_type size_type; //Hier können theoretisch noch andere typedefs hin, aber die sind durch das Set verfügbar

        iterator find(rightKeyT const&amp; tof)
        {
                return find(tof);
        }

        iterator find(leftKeyT const&amp; tof)
        {
                return find(tof);
        }

        const_iterator find(rightKeyT const&amp; tof) const
        {
                return std::find_if(mSet.begin(), mSet.end(), [&amp;](value_type const&amp; a){return a.second == tof;});
        }

        const_iterator find(leftKeyT const&amp; tof) const
        {
                return std::find_if(mSet.begin(), mSet.end(), [&amp;](value_type const&amp; a){return a.first == tof;});
        }

        leftKeyT&amp; operator[](rightKeyT const&amp; a)
        {
                return const_cast&lt;leftKeyT&amp;&gt;(insert(a).first-&gt;first);
        }

        rightKeyT&amp; operator[](leftKeyT const&amp; a)
        {
                return const_cast&lt;rightKeyT&amp;&gt;(insert(a).first-&gt;second);
        }

        void clear()
        {
                mSet.clear();
        }

        size_type count(leftKeyT const&amp; lK) const
        {
                return std::count_if(mSet.mSet.begin(), mSet.end(), [&amp;](std::pair&lt;leftKeyT, rightKeyT&gt; const&amp; p)
                                                                   {
                                                                        return p.first == lK;
                                                                   });
        }
        size_type count(rightKeyT const&amp; rK) const
        {
                return std::count_if(mSet.mSet.begin(), mSet.end(), [&amp;](std::pair&lt;leftKeyT, rightKeyT&gt; const&amp; p)
                                                                   {
                                                                        return p.second == rK;
                                                                   });
        }

        size_type erase(rightkeyT const&amp; lK)
        {
                size_type rval = count(lK);
                std::remove_if(mSet.begin(), mSet.end(), [&amp;](value_type const&amp; p){return p.second == lK;});
                return rval;
        }

        size_type erase(leftkeyT const&amp; lK)
        {
                size_type rval = count(lK);
                std::remove_if(mSet.begin(), mSet.end(), [&amp;](value_type const&amp; p){return p.first == lK;});
                return rval;
        }

        template&lt;typename keyT&gt;
        std::pair&lt;iterator, bool&gt; insert(keyT const&amp; t)
        {
                std::pair&lt;iterator, bool&gt; rval(find(t), false);

                if(rval.first != mSet.end())
                        return rval;

                return mSet.insert(std::make_pair(leftKeyT(), t));;
        }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227751</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 27 Jun 2012 15:11:36 GMT</pubDate></item></channel></rss>