<?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 sortieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich ein std::map sortieren, damit die Beziehung Key - Value vorhanden bleibt?</p>
<p>std::map&lt;string, int&gt; length;</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276745/map-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 06:50:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276745.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Nov 2010 20:39:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 20:39:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich ein std::map sortieren, damit die Beziehung Key - Value vorhanden bleibt?</p>
<p>std::map&lt;string, int&gt; length;</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976908</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 20:39:13 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 20:41:22 GMT]]></title><description><![CDATA[<p>Erläutere mal inwiefern eine map nicht sortiert sein kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976914</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 07 Nov 2010 20:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 20:44:50 GMT]]></title><description><![CDATA[<p>ist schwierig bei einem assoziativen array. ich möchte halt den kleinsten wert mit dem key herausfinden. nur weiß ich nicht, wie das geht. so ist die ausdrucksweise wahrscheinlich korrekt. könnt ihr mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976916</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 20:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 20:50:31 GMT]]></title><description><![CDATA[<p>map schrieb:</p>
<blockquote>
<p>ist schwierig bei einem assoziativen array. ich möchte halt den kleinsten wert mit dem key herausfinden. nur weiß ich nicht, wie das geht. so ist die ausdrucksweise wahrscheinlich korrekt. könnt ihr mir helfen?</p>
</blockquote>
<p>Bilde mal grammatikalisch korrekte Sätze, ich weiß immer noch nicht was du willst. Willst den den key zu einem bestimmten (dem kleinsten) value herausfinden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976923</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 07 Nov 2010 20:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 20:52:09 GMT]]></title><description><![CDATA[<p>Ja, genau das möchte ich machen. Ich brauche den Key zum kleinsten Wert. Ich weiß aber leider nicht, wie ich das mache <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976924</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 20:52:09 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 20:53:47 GMT]]></title><description><![CDATA[<p>map schrieb:</p>
<blockquote>
<p>Ich brauche den Key zum kleinsten Wert. Ich weiß aber leider nicht, wie ich das mache <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<pre><code class="language-cpp">map.begin()-&gt;first
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1976925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976925</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Nov 2010 20:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:00:33 GMT]]></title><description><![CDATA[<p>ne, damit kriege ich nicht den kleinsten Wert, sondern das erste Element.</p>
<p>Ich habe ein std::map. Die Keys sind Strings und die Values sind Integer. Jetzt brauche ich den Key, bei das integer Value am kleinsten ist.</p>
<p>Mit Nexus' Code kann was nicht stimmen, weil bei mir einfach der erste Key zurückgegeben wird.</p>
<p>Vielen Dank schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976931</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:02:33 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>map schrieb:</p>
<blockquote>
<p>Ich brauche den Key zum kleinsten Wert. Ich weiß aber leider nicht, wie ich das mache <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<pre><code class="language-cpp">map.begin()-&gt;first
</code></pre>
</blockquote>
<p>So wie ich das verstehe, will er das genaue Gegenteil.</p>
<p>Dafür könntest du entweder <a href="http://www.cplusplus.com/reference/algorithm/min_element/" rel="nofollow">std::min_element</a> auf die gesamte map loslassen oder (falls du noch andere als das kleinste brauchst) die Werte umgekehrt in eine andere Datenstruktur speichern, beispielsweise in eine andere map.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976935</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:03:46 GMT]]></title><description><![CDATA[<p>Vielleicht geht das mit boost::bimap relativ einfach?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976938</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:03:46 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:06:19 GMT]]></title><description><![CDATA[<p>Sorry, hab das zu schnell gelesen und &quot;kleinsten Key&quot; verstanden. <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>Ja, Boost.Bimap ist in beide Richtungen sortiert. Kommt halt drauf an, wie oft man die Suche benötigt. Falls eher selten, würde ich auch <code>std::min_element()</code> nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976940</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:06:19 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:09:17 GMT]]></title><description><![CDATA[<p>hey,</p>
<p>min_element hört sich doch gut an. Jetzt bin ich nur noch zu doof, das anzuwenden. Wenn die Keys Strings sind, warum kann ich das dann nicht schreiben:</p>
<pre><code class="language-cpp">string a = min_element(length.begin(), length.end());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1976943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976943</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:09:17 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:11:53 GMT]]></title><description><![CDATA[<p>ach ja: die fehlermeldung lautet, nachdem ich algorithm eingebunden habe:</p>
<p>error C2440: 'Initialisierung': 'std::_Tree&lt;_Traits&gt;::iterator' kann nicht in 'std::basic_string&lt;_Elem,_Traits,_Ax&gt;' konvertiert werden<br />
1&gt;</p>
<p>??? Was mache ich falsch ? hä?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976945</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:21:00 GMT]]></title><description><![CDATA[<p>ich habs jetzt so gemacht:</p>
<pre><code class="language-cpp">typedef std::map&lt;string, int&gt; IntVector ;
	typedef IntVector::iterator IntVectorIt ;

	IntVectorIt location ;

	location = min_element(length.begin(), length.end());
	cout &lt;&lt; *location;
</code></pre>
<p>Leider funktioniert die Ausgabe nicht.</p>
<p>Binärer Operator '&lt;&lt;': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::pair&lt;_Ty1,_Ty2&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)</p>
<p>Könnt ihr mir bitte nochmal helfen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976951</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:23:07 GMT]]></title><description><![CDATA[<p>nein, ich spame nicht <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>Mir fällt gerade ein: Mit min_element kriege ich doch gar nicht den key. Ich brauche den key zum kleinsten Element.</p>
<p>Bitte helft mir!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976953</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:23:07 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:25:29 GMT]]></title><description><![CDATA[<p>Wahrscheinlich must du die map durchlaufen und den key des kleinsten gefunden elements der Klassen speichern. Mir ist kein anderer Weg bekannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976954</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:25:29 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:28:29 GMT]]></title><description><![CDATA[<p>Du bekommst von <code>min_element()</code> einen Iterator auf den <code>value_type</code> der Map – also das Schlüssel-Wert-Paar. Um den Schlüssel zu extrahieren, musst du auf <code>first</code> zugreifen.</p>
<p>Ausserdem solltest du einen Funktor an <code>min_element()</code> übergeben, der Values vergleicht. Momentan wird das ganze Paar verglichen, d.h. die Schlüssel ( <code>std::pair::first</code> ) werden zuerst verglichen, dann die Werte ( <code>std::pair::second</code> ). Und da die Schlüssel immer verschieden sind, kommt es gar nie zum Wertvergleich.</p>
<p>Möglicherweise wäre eine Schleife einfacher. <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/1976955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976955</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Sun, 07 Nov 2010 21:52:12 GMT]]></title><description><![CDATA[<p>Ist das die Antwort deines Problems?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;string&gt;
#include &lt;map&gt;

using namespace std; 

int main() 
{
	map&lt;string, int &gt; stlmap;
	pair&lt;string, int&gt; paar;

	paar = make_pair(&quot;test1&quot;,15);
	stlmap.insert(paar);
	paar = make_pair(&quot;test2&quot;,10);
	stlmap.insert(paar);
	paar = make_pair(&quot;test3&quot;,7);
	stlmap.insert(paar);
	paar = make_pair(&quot;test4&quot;,5);
	stlmap.insert(paar);
	paar = make_pair(&quot;test5&quot;,8);
	stlmap.insert(paar);

	int minwert = 50;
	string minkey;
	for(map&lt;string,int&gt;::iterator i = stlmap.begin(); i != stlmap.end(); ++i){
		if ( (*i).second &lt; minwert){
			minwert = (*i).second;
			minkey = (*i).first;
		}
	}

	cout &lt;&lt; &quot;minwert: &quot; &lt;&lt; minwert &lt;&lt; endl;
	cout &lt;&lt; &quot;minkey : &quot; &lt;&lt; minkey &lt;&lt; endl;

	cin.get();
    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1976969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976969</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 07 Nov 2010 21:52:12 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Mon, 08 Nov 2010 07:26:49 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Mit HighLigerBiMBam' Hilfe habe ich es wohl hinbekommen. Danke! Mir bleiben aber noch ein paar Fragen, weil das Zeugs ja auch verstehen möchte. Könnt ihr mich bitte korrigieren, wenn etwas nicht stimmt:</p>
<p>Du deklarierst einen Iterator, den du an den Anfang der map stellst und der bis zum letzten Element durchsaust. Ich verstehe noch nicht so ganz, was &quot;first&quot; und was &quot;second&quot; macht. Wenn irgendein Wert kleiner als &quot;minval&quot; ist, dann bekommt minval diesen Wert zugewiesen und minkey den dazugehörigen Key.</p>
<p>Greife ich mit &quot;first&quot; auf den Key zu und mit &quot;second&quot; auf das entsprechende value zu? Irgendwie finde ich in der Referenz nicht die richtige Stelle.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977056</guid><dc:creator><![CDATA[map]]></dc:creator><pubDate>Mon, 08 Nov 2010 07:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Mon, 08 Nov 2010 07:30:59 GMT]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Ich lese mit Interesse diesen Thread. Ich habe jetzt auch eine Frage. Sollte man &quot;minval&quot; nicht lieber mit &quot;INT_MAX&quot; initialisieren, denn ich frage mich, ob das Prinzip auch funktionieren würde, wenn das Array Werte enthält die größer als 50 sind?</p>
<p>Viele Grüße<br />
freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977057</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Mon, 08 Nov 2010 07:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Mon, 08 Nov 2010 07:50:36 GMT]]></title><description><![CDATA[<p>map schrieb:</p>
<blockquote>
<p>Du deklarierst einen Iterator, den du an den Anfang der map stellst und der bis zum letzten Element durchsaust. Ich verstehe noch nicht so ganz, was &quot;first&quot; und was &quot;second&quot; macht. Wenn irgendein Wert kleiner als &quot;minval&quot; ist, dann bekommt minval diesen Wert zugewiesen und minkey den dazugehörigen Key.</p>
<p>Greife ich mit &quot;first&quot; auf den Key zu und mit &quot;second&quot; auf das entsprechende value zu? Irgendwie finde ich in der Referenz nicht die richtige Stelle.</p>
<p>Vielen Dank</p>
</blockquote>
<p>Du vermutest richtig:<br />
<a href="http://www.cplusplus.com/reference/stl/map/" rel="nofollow">http://www.cplusplus.com/reference/stl/map/</a> In dem Link steht, dass die Map die Werte in einem sogenannten <code>pair</code> speichert:<br />
<a href="http://www.cplusplus.com/reference/std/utility/pair/" rel="nofollow">http://www.cplusplus.com/reference/std/utility/pair/</a><br />
<code>first</code> und <code>second</code> sind, wie der Name schon sagt, der erste und der zweite Teil des Pairs, der key und der value.</p>
<p>freakC++ schrieb:</p>
<blockquote>
<p>Ich lese mit Interesse diesen Thread. Ich habe jetzt auch eine Frage. Sollte man &quot;minval&quot; nicht lieber mit &quot;INT_MAX&quot; initialisieren, denn ich frage mich, ob das Prinzip auch funktionieren würde, wenn das Array Werte enthält die größer als 50 sind?</p>
</blockquote>
<p>Ja. Oder besser noch mit <code>numeric_limits&lt;int&gt;::max()</code> . Oder mit dem ersten gefundenen Wert. Ich vermute mal, dass HighLigerBiMBam dies nicht gemacht hat, um den Nutzer map nicht auch noch mit numeric_limits zu verwirren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977065</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 08 Nov 2010 07:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Mon, 08 Nov 2010 08:01:55 GMT]]></title><description><![CDATA[<p>Der Vollständigkeit halber, so geht das mit min_element:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;map&gt;
#include &lt;algorithm&gt;

using namespace std;

bool compare_second(pair&lt;string, int&gt; lhs, pair&lt;string, int&gt; rhs)
{
  return lhs.second &lt; rhs.second;
}

int main()
{
    map&lt;string, int &gt; stlmap;
    stlmap.insert(make_pair(&quot;test1&quot;,15));
    stlmap.insert(make_pair(&quot;test2&quot;,10));
    stlmap.insert(make_pair(&quot;test3&quot;,7));
    stlmap.insert(make_pair(&quot;test4&quot;,5));
    stlmap.insert(make_pair(&quot;test5&quot;,8));

    map&lt;string, int &gt;::iterator minimum = min_element(stlmap.begin(), stlmap.end(), compare_second);

    cout &lt;&lt; &quot;minwert: &quot; &lt;&lt; minimum-&gt;second &lt;&lt; endl;
    cout &lt;&lt; &quot;minkey : &quot; &lt;&lt; minimum-&gt;first &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Auch nicht so schwer, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977076</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 08 Nov 2010 08:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to map sortieren on Mon, 08 Nov 2010 08:30:03 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ich vermute mal, dass HighLigerBiMBam dies nicht gemacht hat, um den Nutzer map nicht auch noch mit numeric_limits zu verwirren.</p>
</blockquote>
<p>Wenn es offensichtlich ist, dass der Fragesteller sich mit der Materie nicht auskennt, sollte man immer zu den einfachen Beispielen greifen. KISS ist immer das Beste um ein Problem zu erklären, auch wenn es nicht die schönste Lösung ist, welche uns von SeppJ nun bereit gestellt wurde!</p>
<p>Letztlich kann jeder die einfachen Beispiele verstehen und weiter optimieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1977090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1977090</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Mon, 08 Nov 2010 08:30:03 GMT</pubDate></item></channel></rss>