<?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[std::map find]]></title><description><![CDATA[<p>gibts ne möglichkeit in ner stringmap anstatt nach einem exakten match nach dem besten match zu suchen?</p>
<p>Eingabe: abc</p>
<p>ab<br />
abcdef &lt;---- der da <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="😉"
    /><br />
xyz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199313/std-map-find</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 13:53:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199313.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Dec 2007 11:39:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::map find on Sat, 01 Dec 2007 11:40:33 GMT]]></title><description><![CDATA[<p>gibts ne möglichkeit in ner stringmap anstatt nach einem exakten match nach dem besten match zu suchen?</p>
<p>Eingabe: abc</p>
<p>ab<br />
abcdef &lt;---- der da <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="😉"
    /><br />
xyz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413299</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Sat, 01 Dec 2007 11:40:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::map find on Sat, 01 Dec 2007 11:40:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nein das kann std::map nicht. Dazu brauchst du einen eigenen Container, bzw. einen vector mit einer entsprechenden manuellen Suche.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413300</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 01 Dec 2007 11:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::map find on Sat, 01 Dec 2007 11:53:42 GMT]]></title><description><![CDATA[<p>hmm schreib dir erstmal die Funktion mit der danach suchen willst. Das dann in einen entsprechenden Container mit reinzubauen, ist nicht so sonderlich schwer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413305</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 01 Dec 2007 11:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::map find on Sat, 01 Dec 2007 12:05:35 GMT]]></title><description><![CDATA[<p>Es gibt eine Möglichkeit, das mit std::map zu realisieren. Dazu musst du als dritten Template-Parameter einen anderen Comparator einsetzen:</p>
<pre><code class="language-cpp">class my_comparator
{
 public:
  bool operator() (const std::string&amp; s1, const std::string&amp; s2) const
  {
    //vergleiche s1 und s2 irgendwie
  }
};

std::map&lt;std::string, other_type, my_comparator&gt; my_map;
</code></pre>
<p>Nach Stroustrup muss der Comparator jedoch für <em>kleiner als</em> und <em>gleich</em> transitiv sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413311</guid><dc:creator><![CDATA[deha]]></dc:creator><pubDate>Sat, 01 Dec 2007 12:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to std::map find on Sat, 01 Dec 2007 14:19:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>für diesen Fall solltest du eigentlich lower_bound/upper_bound verwenden können.<br />
Mit lower_bound bekommst du das erste Element, dass nicht kleiner als der Suchstring ist. Mit upper_bound das erste Element, dass größer ist als der Suchstring.</p>
<pre><code class="language-cpp">typedef std::map&lt;string, int&gt; Map;
Map m;
m.insert(Map::value_type(&quot;ab&quot;, 1));
m.insert(Map::value_type(&quot;abcdef&quot;, 2));
m.insert(Map::value_type(&quot;xyz&quot;, 3));
Map::iterator lIt = m.lower_bound(&quot;abc&quot;);
</code></pre>
<p>Hier zeigt lIt nun auf den Eintrag (&quot;abcdef&quot;, 2).</p>
<pre><code class="language-cpp">typedef std::map&lt;string, int&gt; Map;
Map m;
m.insert(Map::value_type(&quot;ab&quot;, 1));
m.insert(Map::value_type(&quot;xyz&quot;, 3));
Map::iterator lIt = m.lower_bound(&quot;abc&quot;);
</code></pre>
<p>Hier hingegen auf (&quot;xyz&quot;, 3). Ist halt die Frage, was für dich in diesem Fall der &quot;beste match&quot; ist. Gegebenenfalls musst du halt den Suchstring, den du an lower_/upper_bound übergibst anpassen.<br />
Wenn du z.B. alle Einträge haben willst, die ein gemeinsames Präfix p haben:</p>
<pre><code class="language-cpp">Map::iterator lIt = m.lower_bound(&quot;ab&quot;);
Map::iterator uIt = m.upper_bound(std::string(&quot;ab&quot;)+(char)CHAR_MAX);
cout &lt;&lt; &quot;Entries with prefix 'ab': &quot; &lt;&lt; endl;
for (; lIt != uIt; ++lIt) {
  cout &lt;&lt; lIt-&gt;first &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1413370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413370</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 01 Dec 2007 14:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::map find on Sat, 01 Dec 2007 14:30:11 GMT]]></title><description><![CDATA[<p>--.. ..- + ... .--. .- . -</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413379</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 01 Dec 2007 14:30:11 GMT</pubDate></item></channel></rss>