<?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[map operator [] überladen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe zur Zeit vor folgendem Problem:<br />
Ich verwende eine map&lt;string, string&gt;.</p>
<p>Wenn ich bei einer Map auf ein nicht existierendes Element zugreife wie<br />
zum Beispiel:</p>
<p>map&lt;string, string&gt; myMap;<br />
myMap[&quot;hallo&quot;] = &quot;jajaja&quot;;</p>
<p>dann wird ja das Element mit dem &quot;Index&quot; hallo eingefügt.<br />
Nun würde ich gerne sicherstellen, dass in diese Map nur Indizes kleingeschrieben<br />
eingetragen werden.<br />
D.h. wenn ich auf myMap[&quot;HuHu&quot;] zugreife, soll er es verwenden wie myMap[&quot;huhu&quot;].<br />
Und sollte mit groß-geschrieben zugegriffen werden hätte ich gerne die<br />
Möglichkeit mit cout oder sonstwie eine Meldung in die Konsole zu jagen.</p>
<p>Das heißt meiner Meinung nach, dass ich den Operator [] überladen muss.<br />
Da map aber ein Template ist habe ich (auch nach einiger Zeit googlen) nicht so<br />
wirklich herausgefunden, wie ich NUR diesen Operator soweit abändern kann,<br />
dass oben genannte Funktionalität gegeben ist,<br />
ALLE anderen Funktionalitäten aber bleiben wie sie sind.</p>
<p>Vielleicht kann mir von euch ja jemand helfen.<br />
Vielen Dank.<br />
greetz<br />
Marius</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/122075/map-operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 22:44:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/122075.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Sep 2005 10:20:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 10:20:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe zur Zeit vor folgendem Problem:<br />
Ich verwende eine map&lt;string, string&gt;.</p>
<p>Wenn ich bei einer Map auf ein nicht existierendes Element zugreife wie<br />
zum Beispiel:</p>
<p>map&lt;string, string&gt; myMap;<br />
myMap[&quot;hallo&quot;] = &quot;jajaja&quot;;</p>
<p>dann wird ja das Element mit dem &quot;Index&quot; hallo eingefügt.<br />
Nun würde ich gerne sicherstellen, dass in diese Map nur Indizes kleingeschrieben<br />
eingetragen werden.<br />
D.h. wenn ich auf myMap[&quot;HuHu&quot;] zugreife, soll er es verwenden wie myMap[&quot;huhu&quot;].<br />
Und sollte mit groß-geschrieben zugegriffen werden hätte ich gerne die<br />
Möglichkeit mit cout oder sonstwie eine Meldung in die Konsole zu jagen.</p>
<p>Das heißt meiner Meinung nach, dass ich den Operator [] überladen muss.<br />
Da map aber ein Template ist habe ich (auch nach einiger Zeit googlen) nicht so<br />
wirklich herausgefunden, wie ich NUR diesen Operator soweit abändern kann,<br />
dass oben genannte Funktionalität gegeben ist,<br />
ALLE anderen Funktionalitäten aber bleiben wie sie sind.</p>
<p>Vielleicht kann mir von euch ja jemand helfen.<br />
Vielen Dank.<br />
greetz<br />
Marius</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883456</guid><dc:creator><![CDATA[Croydon]]></dc:creator><pubDate>Fri, 30 Sep 2005 10:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 10:42:09 GMT]]></title><description><![CDATA[<p>mach dir doch ein spezialisiertes Template für string wo du dir den operator überschreibst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883470</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Fri, 30 Sep 2005 10:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 10:47:28 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>mach dir doch ein spezialisiertes Template für string wo du dir den operator überschreibst</p>
</blockquote>
<p>*g* Tjo... mein Problem ist, dass ich bisher noch keine Erfahung mit Überschreiben von Operatoren usw. hab.<br />
Und bei den Google-Ergebnissen habe ich immer nur neue Klassen gefunden,<br />
bei denen dann Operatoren definiert wurden.<br />
Ich brauche aber ja sozusagen dann ne eigene Map Klasse, die alle Eigenschaften der map&lt;string, string&gt; hat und in der nur der eine Operator dann irgenwie(*g*) anders ist.</p>
<p>Leider habe ich null Plan, wie ich das anstellen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883478</guid><dc:creator><![CDATA[Croydon]]></dc:creator><pubDate>Fri, 30 Sep 2005 10:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 10:53:08 GMT]]></title><description><![CDATA[<p>Mach ne externe Funktion. An std::map brauchst und solltest du nicht rumfummeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883480</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 30 Sep 2005 10:53:08 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 10:57:13 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Mach ne externe Funktion. An std::map brauchst und solltest du nicht rumfummeln.</p>
</blockquote>
<p>Rumfummeln will ich da auch nicht dran.<br />
Ich möchte nur eine Klasse oder ein Template haben, das <strong>genauso</strong> ist wie ne map&lt;string, string&gt; oder map allgemein, nur halt der [] Operator anders.<br />
Und ich kann auch nicht alles so umprogrammieren, dass ich vor der Nutzung der Map den String prüfe, da der Code so ca. 20.000 Zeilen haben wird mittlerweile und alles mit map implementiert ist.<br />
Daher brauche ich eine Lösung, die möglichst einfach im &quot;Umbau&quot; ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883485</guid><dc:creator><![CDATA[Croydon]]></dc:creator><pubDate>Fri, 30 Sep 2005 10:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 11:05:01 GMT]]></title><description><![CDATA[<p>Schreib Dir ein Komparator-Objekt und steck das in die Map</p>
<p>Sieht dann in etwa so aus</p>
<pre><code class="language-cpp">struct StringCaseInsensitiveLess : public std::binary_function&lt;std::string, std::string, bool&gt;
{
   bool operator()( const std::string&amp; lhs, const std::string&amp; rhs) const
   {
      /// beide Strings nach lower oder upper Käs umwandeln
      /// und dann true zurückgeben, wenn der erste lexikographisch
      /// kleiner ist
   }
};

map&lt;std::string, std::string, StringCaseInsensitiveLess&gt; klaus;
</code></pre>
<p>Edit: von binary_function abgeleitet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883491</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 30 Sep 2005 11:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 11:08:45 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Schreib Dir ein Komparator-Objekt und steck das in die Map<br />
--- snip ---</p>
</blockquote>
<p>Aber bringt mir das denn was, wenn ich nicht nur beim anlegen eines Elements<br />
sondern auch bei theoretisch jedem Zugriff mit dem Operator [] diese Funktion nutzen will?<br />
Dachte das ist nur für die interne Sortierung der Map sinnvoll diese Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883497</guid><dc:creator><![CDATA[Croydon]]></dc:creator><pubDate>Fri, 30 Sep 2005 11:08:45 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 11:14:06 GMT]]></title><description><![CDATA[<p>Durch den Komparator wird für die Map &quot;HuHu&quot; äquivalent zu &quot;huhu&quot; und zu &quot;HUHu&quot; und allen restlichen Möglichkeiten.</p>
<p>Der Witz ist eben, dass die Map nicht auf Gleichheit, sondern auf Äquivalenz vergleicht.</p>
<p>== wird in etwa so definiert (in einer Map wohlgemerkt!):</p>
<pre><code class="language-cpp">bool operator == ( const T&amp; lhs, const T&amp; rhs) const
{
  return !comp( lhs, rhs) &amp;&amp; !comp( rhs, lhs);
}
</code></pre>
<p>wobei comp das Komparator-Objekt ist, dass Du in die Map gesteckt hast.</p>
<p>Wenn jetzt &quot;HuHu&quot; schon drinsteht, würde &quot;huhu&quot; nicht mehr eingefügt (weil äquivalent zu &quot;HuHu&quot; und damit schon vorhanden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/883506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883506</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 30 Sep 2005 11:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 11:14:59 GMT]]></title><description><![CDATA[<p>Supi, danke.<br />
Das werd ich mal ausprobieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/883511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883511</guid><dc:creator><![CDATA[Croydon]]></dc:creator><pubDate>Fri, 30 Sep 2005 11:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 11:56:51 GMT]]></title><description><![CDATA[<p>Funktioniert absolut super.<br />
Danke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
So &quot;einfach&quot; die Lösung und ich such so komplizierte Wege <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/883555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883555</guid><dc:creator><![CDATA[Croydon]]></dc:creator><pubDate>Fri, 30 Sep 2005 11:56:51 GMT</pubDate></item><item><title><![CDATA[Reply to map operator [] überladen on Fri, 30 Sep 2005 12:24:42 GMT]]></title><description><![CDATA[<p>Bis man die Klassen und Konzepte der STL kennt und kann, dauert es auch ein wenig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Mach Dir nix draus <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/883577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/883577</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Fri, 30 Sep 2005 12:24:42 GMT</pubDate></item></channel></rss>