<?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::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schaffe es einfach nicht meine std::pair sortieren zu lassen:<br />
Kann mir jemand helfen?</p>
<pre><code class="language-cpp">std::pair&lt;unsigned int, int&gt; mypair;

//mypair wird korrekt gefüllt

std::sort(mypair, mypair + dim, Cache_Comparator());

struct Cache_Comparator
{
	template &lt;class T&gt;
			bool operator()(const std::pair&lt;unsigned int, int&gt; &amp; a, const std::pair&lt;unsigned int, int&gt;&amp; b)
	{	
// 		std::pair&lt;unsigned int, int&gt; ac = a;
// 		std::pair&lt;unsigned int, int&gt; bc = b;
		if ( (a.second &lt;  b.second) || (a.second == b.second) )
			return  true;

		return false;
	}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/196254/std-pair-lt-unsigned-int-int-gt-sortieren-lassen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 09:09:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196254.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Oct 2007 12:31:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 12:31:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schaffe es einfach nicht meine std::pair sortieren zu lassen:<br />
Kann mir jemand helfen?</p>
<pre><code class="language-cpp">std::pair&lt;unsigned int, int&gt; mypair;

//mypair wird korrekt gefüllt

std::sort(mypair, mypair + dim, Cache_Comparator());

struct Cache_Comparator
{
	template &lt;class T&gt;
			bool operator()(const std::pair&lt;unsigned int, int&gt; &amp; a, const std::pair&lt;unsigned int, int&gt;&amp; b)
	{	
// 		std::pair&lt;unsigned int, int&gt; ac = a;
// 		std::pair&lt;unsigned int, int&gt; bc = b;
		if ( (a.second &lt;  b.second) || (a.second == b.second) )
			return  true;

		return false;
	}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1392990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392990</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 12:37:03 GMT]]></title><description><![CDATA[<p>Äh, Du willst EIN Pair sortieren? Welches dieser ein Pair soll denn zuerst kommen? <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/1392995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392995</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 12:38:15 GMT]]></title><description><![CDATA[<pre><code>Abfrage des Elementes »sort« in »((C*)this)-&gt;C::m_test«, das vom Nicht-Klassentyp »std::pair&lt;unsigned int, int&gt;*« ist
</code></pre>
<p>ist die fehlermeldung</p>
<p>ja klar - kann ich denn ein pair nach dem int also dem zweiten elemente nicht soriteren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392998</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:38:15 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 12:43:36 GMT]]></title><description><![CDATA[<p>WAS willst Du denn überhaupt sortieren? Dein pair enthält zwei Werte unterschiedlichen Typs, die kannst Du schonmal nicht beliebig tauschen. Also vermute ich dass Du eigentlich mehrere Pairs nach ihrem zweiten Wert sortieren willst. Ich sehe in dem Quelltext aber nur ein einziges Pair. Man könnte zwar auch eine Liste mit einem Element sortieren, aber was brächte das?</p>
<p>Btw: Was ist in dem Ursprungsbeispiel &quot;dim&quot;? Achja: Die Fehlermeldung passt auch nicht zum geposteten Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393002</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:43:36 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 12:49:04 GMT]]></title><description><![CDATA[<p>Ja ich habe natürlich ein array aus pairs, welches ich nach dem zweiten pair-eintrag sortieren will ja sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393010</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 12:56:38 GMT]]></title><description><![CDATA[<p>Dann sieht die Sache ja schon anders aus <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>Dann müsste es so gehen:</p>
<pre><code class="language-cpp">std::sort(mypair, mypair+dim, Cache_Comparator()
</code></pre>
<p>Die Fehlermeldung sieht aber so aus als hättest Du folgendes versucht:</p>
<pre><code class="language-cpp">mypair-&gt;sort(...);
</code></pre>
<p>Im Cache_Comparator musst Du aber eine &lt;-Beziehung herstellen, Du hast zur Zeit eine &lt;=-Beziehung. Dafür sollte folgendes reichen:</p>
<pre><code class="language-cpp">return a.second &lt; b.second;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1393012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393012</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:05:53 GMT]]></title><description><![CDATA[<p>Danke aber mit dem folgendem code:</p>
<pre><code class="language-cpp">std::sort(mypair, mypair + dim, Cache_Comparator());

struct Cache_Comparator
{
	template &lt;class T&gt;
			bool operator()(const std::pair&lt;unsigned int, int&gt; &amp; a, const std::pair&lt;unsigned int, int&gt; &amp; b)
	{	
		return a.second &lt; b.second;
	}
};
</code></pre>
<p>gibts ne riesiege fehlermeldung:</p>
<pre><code>/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h: In function »void std::partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair&lt;unsigned int, int&gt;*, _Compare = Cache_Comparator]«:
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h:2666:   instantiated from »void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = std::pair&lt;unsigned int, int&gt;*, _Size = int, _Compare = Cache_Comparator]«
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h:2749:   instantiated from »void std::sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair&lt;unsigned int, int&gt;*, _Compare = Cache_Comparator]«
</code></pre>
<p>und das geht noch ewig so weiter bis er zu meinem std::sort aufruf kommt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393019</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:12:43 GMT]]></title><description><![CDATA[<p>Du hast ein Membertemplate, dessen Templateparameter (wozu dient der überhaupt?) nicht aus den Funktionsargumenten hergeleitet werden kann - mithin muss dieser Parameter explizit angegeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393029</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:16:03 GMT]]></title><description><![CDATA[<p>falscher operator <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>bool <strong>operator&lt;</strong>(const std::pair&lt;unsigned int, int&gt; &amp; a, const std::pair&lt;unsigned int, int&gt; &amp; b) ...</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> doofes syntaxhiglighting</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393031</guid><dc:creator><![CDATA[crashterpiece]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:16:03 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:17:22 GMT]]></title><description><![CDATA[<p>da wird ja der hund in der pfanne verrückt - bin ich blind? Der folgende code produziert immer noch den fehler</p>
<pre><code>struct Cache_Comparator
{
	bool operator&lt;(const std::pair&lt;unsigned int, int&gt; &amp; a, const std::pair&lt;unsigned int, int&gt; &amp; b)
	{	
		return a.second &lt; b.second;
	}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1393033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393033</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:21:34 GMT]]></title><description><![CDATA[<pre><code>bool Cache_Comparator::operator&lt;(const std::pair&lt;unsigned int, int&gt;&amp;, const std::pair&lt;unsigned int, int&gt;&amp;)« muss genau ein Argument nehmen
</code></pre>
<p>das ist der fehler jetzt....ja klar ein argument.....nur wie mach ich jetzt den vergleich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393038</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:31:27 GMT]]></title><description><![CDATA[<p>[quote=&quot;crashterpiece&quot;]falscher operator ;)[quote]<br />
Nein.</p>
<blockquote>
<p>bool <strong>operator&lt;</strong>(const std::pair&lt;unsigned int, int&gt; &amp; a, const std::pair&lt;unsigned int, int&gt; &amp; b) ...</p>
</blockquote>
<p>Funktoren zeichnen sich i.A. dadurch aus, dass sie mit <strong>()</strong> aufgerufen werden...</p>
<p>@uuuff:<br />
Abgesehen von dem Templateparameter war der operator() mit return a.second &lt; b.second schon richtig.</p>
<p>Wenn Du in dem Cache_Comparator einen operator&lt; (mit einem Argument) implementierst, kannst Du zwei Cache_Comparator'en vergleichen, aber das ist wohl nicht gewünscht <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/1393045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393045</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:32:41 GMT]]></title><description><![CDATA[<p>Jap, mit () gehts einwandfrei - danke an alle <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1393047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393047</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 13:39:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">namespace util
{
    template&lt;typename first, typename second&gt;
    struct pair_second_greater
    {
        bool operator()(std::pair&lt;first, second&gt; const&amp; lhs, std::pair&lt;first, second&gt; const&amp; rhs)
        {    return (lhs.second &lt; rhs.second); }
    };

    template&lt;typename first, typename second&gt;
    struct pair_first_greater
    {
        bool operator()(std::pair&lt;first, second&gt; const&amp; lhs, std::pair&lt;first, second&gt; const&amp; rhs)
    {    return (lhs.first &lt; rhs.first); }
};

std::vector&lt; std::pair&lt;unsigned int, int&gt; &gt; g_data;
// ...
std::sort(g_data.begin(), g_data.end(), util::pair_second_greater&lt;unsigned int, int&gt;());
// oder 
std::sort(g_data.begin(), g_data.end(), util::pair_first_greater&lt;unsigned int, int&gt;());
</code></pre>
<p>... ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393052</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::pair&amp;lt;unsigned int, int&amp;gt; sortieren lassen on Sat, 27 Oct 2007 18:53:34 GMT]]></title><description><![CDATA[<p>hui danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393232</guid><dc:creator><![CDATA[uuuff]]></dc:creator><pubDate>Sat, 27 Oct 2007 18:53:34 GMT</pubDate></item></channel></rss>