<?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[Wie arbeitet die find Methode der Map?]]></title><description><![CDATA[<p>Wenn ich folgende map habe:</p>
<pre><code class="language-cpp">std::map &lt; std::string, double &gt; myMap;

myMap[&quot;Hallo&quot;] = 2.1213;
myMap[&quot;Welt&quot;] = 31.43;
</code></pre>
<p>und nun mit find nach &quot;Hallo&quot; suche,</p>
<p>Wird nun mit einem einfachen strcmp gesucht?</p>
<p>mappi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157236/wie-arbeitet-die-find-methode-der-map</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 01:37:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157236.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Aug 2006 06:07:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 06:07:09 GMT]]></title><description><![CDATA[<p>Wenn ich folgende map habe:</p>
<pre><code class="language-cpp">std::map &lt; std::string, double &gt; myMap;

myMap[&quot;Hallo&quot;] = 2.1213;
myMap[&quot;Welt&quot;] = 31.43;
</code></pre>
<p>und nun mit find nach &quot;Hallo&quot; suche,</p>
<p>Wird nun mit einem einfachen strcmp gesucht?</p>
<p>mappi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123344</guid><dc:creator><![CDATA[mappi]]></dc:creator><pubDate>Thu, 24 Aug 2006 06:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 06:20:34 GMT]]></title><description><![CDATA[<p>Nein, mit dem Kleiner-Operator von std::string.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123352</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 24 Aug 2006 06:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 07:02:22 GMT]]></title><description><![CDATA[<p>Und der Kleiner-Operator kann schon anhand der Länge die Entscheidung treffen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123381</guid><dc:creator><![CDATA[kleiner]]></dc:creator><pubDate>Thu, 24 Aug 2006 07:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 07:08:51 GMT]]></title><description><![CDATA[<p>kleiner schrieb:</p>
<blockquote>
<p>Und der Kleiner-Operator kann schon anhand der Länge die Entscheidung treffen.</p>
</blockquote>
<p>wie das? btrachte einfach mal: &quot;a&quot;, &quot;aa&quot; und &quot;b&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123386</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Aug 2006 07:08:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 08:43:03 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das sollte doch eigentlich in dem map-Header stehen, oder ?<br />
Letztlich ist die Frage schon beantwortet, zieht aber die Frage nach sich: &quot;Wie arbeitet der operator&lt;() für Strings ?&quot; ...<br />
... die aber eigentlich auch im string-Header beantwortet werden müsste (WENN man das template-Zeugs lesen kann <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123438</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 24 Aug 2006 08:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 08:56:16 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>kleiner schrieb:</p>
<blockquote>
<p>Und der Kleiner-Operator kann schon anhand der Länge die Entscheidung treffen.</p>
</blockquote>
<p>wie das? btrachte einfach mal: &quot;a&quot;, &quot;aa&quot; und &quot;b&quot;</p>
</blockquote>
<p>Das ändert nichts daran dass zuerst nach der Länge geguckt wird. Das ist gut so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123457</guid><dc:creator><![CDATA[l]]></dc:creator><pubDate>Thu, 24 Aug 2006 08:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 09:00:46 GMT]]></title><description><![CDATA[<p>In meiner string-Implementation findet der vergleich (operator&lt;) über die Funktion<br />
char_traits::compare statt. Die zu vergleichende Länge wird dabei auf die kleinere der beiden Längen festgelegt.<br />
Die Funktion compare sieht so aus</p>
<pre><code class="language-cpp">static int compare (const char_type* s1, const char_type* s2, size_t n)
    {
      size_t i=0;

      while ( i &lt; n )
      { 
        if ( !eq( s1[i], s2[i] ) )
        {
          if ( lt( s1[i], s2[i]) )
            return -1;
          else
            return 1;               
        }
        i++;
      }
      return 0;
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1123466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123466</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 24 Aug 2006 09:00:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 09:02:21 GMT]]></title><description><![CDATA[<p>l schrieb:</p>
<blockquote>
<p>Das ändert nichts daran dass zuerst nach der Länge geguckt wird. Das ist gut so.</p>
</blockquote>
<p>Es wird zuerst nach der Länge <em>geguckt</em>, aber nicht danach entschieden:</p>
<blockquote>
<p>21.3.6.8 - basic_string::compare [lib.string::compare]</p>
<p>int compare(const basic_string&lt;charT,traits,Allocator&gt;&amp; str ) const</p>
<p>-1- Effects: Determines the effective length rlen of the strings to compare as the smallest of size() and str.size(). The function then compares the two strings by calling traits::compare(data(), str.data(), rlen).</p>
<p>-2- Returns: the nonzero result if the result of the comparison is nonzero. Otherwise, returns a value as indicated in Table ??:</p>
<p>compare() results Condition Return Value<br />
size() &lt; str .size() &lt; 0<br />
size() == str .size() 0<br />
size() &gt; str .size() &gt; 0</p>
</blockquote>
<p>Im Endeffekt ergibt sich eine lexikographische Ordnung, genau wie mit strcmp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123470</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 24 Aug 2006 09:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 09:49:29 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>l schrieb:</p>
<blockquote>
<p>Das ändert nichts daran dass zuerst nach der Länge geguckt wird. Das ist gut so.</p>
</blockquote>
<p>Es wird zuerst nach der Länge <em>geguckt</em>, aber nicht danach entschieden</p>
</blockquote>
<p>Ich sehe worauf du hinauswillst, ich sehe auch den obigen Codeausschnitt der Implementierung (ich hatte mich geirrt). Dennoch verstehe ich nicht warum. In meinen Augen ist es eine erhebliche Leistungssteigerung wenn man <em>sofort</em> nach der Länge entscheidet, da, so behaupte ich, es irgendwie unwahrscheinlich ist, dass man in der Praxis &quot;a&quot;, &quot;aa&quot; und &quot;b&quot; miteinander vergleicht.</p>
<p>Wenn doch, so wäre es nett, wenn man zwei unterschiedliche Implementierungen von operator&lt; anbieten und den Programmierer entscheiden lassen könnte. Aber das ist ja leider nicht möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123520</guid><dc:creator><![CDATA[l]]></dc:creator><pubDate>Thu, 24 Aug 2006 09:49:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 09:51:25 GMT]]></title><description><![CDATA[<p>Oder es ist möglich, aber sehr unbequem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123525</guid><dc:creator><![CDATA[l]]></dc:creator><pubDate>Thu, 24 Aug 2006 09:51:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 09:53:33 GMT]]></title><description><![CDATA[<p>l schrieb:</p>
<blockquote>
<p>Dennoch verstehe ich nicht warum.</p>
</blockquote>
<p>Also ich möchte String normalerweise lexikographisch sortiert haben, eben wie im Lexikon. Da stehen auch nicht die kurzen Wörter vor den langen.</p>
<blockquote>
<p>Wenn doch, so wäre es nett, wenn man zwei unterschiedliche Implementierungen von operator&lt; anbieten und den Programmierer entscheiden lassen könnte. Aber das ist ja leider nicht möglich.</p>
</blockquote>
<p>Du kannst der map doch sagen, wie sie sortieren soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123528</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 24 Aug 2006 09:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 10:01:20 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>l schrieb:</p>
<blockquote>
<p>Dennoch verstehe ich nicht warum.</p>
</blockquote>
<p>Also ich möchte String normalerweise lexikographisch sortiert haben, eben wie im Lexikon. Da stehen auch nicht die kurzen Wörter vor den langen.</p>
</blockquote>
<p>Uh, ja, macht Sinn.</p>
<blockquote>
<p>Wenn doch, so wäre es nett, wenn man zwei unterschiedliche Implementierungen von operator&lt; anbieten und den Programmierer entscheiden lassen könnte. Aber das ist ja leider nicht möglich.</p>
</blockquote>
<p>Du kannst der map doch sagen, wie sie sortieren soll.[/quote]<br />
Wie das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123548</guid><dc:creator><![CDATA[l]]></dc:creator><pubDate>Thu, 24 Aug 2006 10:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 10:27:59 GMT]]></title><description><![CDATA[<p>In dem du selber ein Funktionsobjekt schreibst, dass die Strings so vergleicht, wie du möchtest, und es der Map als Paramter übergeben (siehe Compare in der STL Docu )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123578</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Thu, 24 Aug 2006 10:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 10:33:55 GMT]]></title><description><![CDATA[<p>1310-Logik schrieb:</p>
<blockquote>
<p>In dem du selber ein Funktionsobjekt schreibst, dass die Strings so vergleicht, wie du möchtest, und es der Map als Paramter übergeben (siehe Compare in der STL Docu )</p>
</blockquote>
<p>Hab vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123586</guid><dc:creator><![CDATA[l]]></dc:creator><pubDate>Thu, 24 Aug 2006 10:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wie arbeitet die find Methode der Map? on Thu, 24 Aug 2006 11:50:42 GMT]]></title><description><![CDATA[<p>l schrieb:</p>
<blockquote>
<p>...In meinen Augen ist es eine erhebliche Leistungssteigerung wenn man <em>sofort</em> nach der Länge entscheidet, ...</p>
</blockquote>
<p>ich glaube, Dir schwebt nicht der &quot;operator&lt;()&quot;, sondern der &quot;operator!=()&quot; vor.<br />
IMO ist der Fall, dass zwei zu vergleichend Strings gleich lang sind eher die Ausnahme sind....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123688</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 24 Aug 2006 11:50:42 GMT</pubDate></item></channel></rss>