<?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::sort mit structure geht nicht, qsort soll man nicht - wie dann?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche ein array mit einer eigens definierten structure zu sortieren,<br />
mit std::sort kann ich nicht und qsort sollte man nicht verwenden....kann mir jemand helfen?</p>
<p>Mein versuch:</p>
<pre><code class="language-cpp">qsort(	(void *) myarr, 
		   	myarr_elements, 
	 		sizeof(MM_DATA), 
			&amp;MyClass::Compare);

//die Compare
int 
MyClass::Compare(const void *a, const void *b)
{
	MM_DATA *ma,*mb;

	ma = (MM_DATA *) a;
	mb = (MM_DATA *) b;

	if (ma-&gt;i &lt;  mb-&gt;i) return(-1);
	if ((ma-&gt;i == mb-&gt;i) &amp;&amp; (ma-&gt;j &lt; mb-&gt;j)) return(-1);
	if ((ma-&gt;i == mb-&gt;i) &amp;&amp; (ma-&gt;j == mb-&gt;j)) return(0);
	return(1);
} 

//meine MM_DATA struktur:

struct MM_DATA 
{
	int i; 			
	int j; 			
	double val; 	
};
</code></pre>
<p>Als Fehlermeldung bekomme ich so:</p>
<blockquote>
<p>Fehler: »int (MyClass::<em>)(const void</em>, const void*)« kann nicht nach »int (<em>)(const void</em>, const void*)« für Argument »4« nach »void qsort(void*, size_t, size_t, int (<em>)(const void</em>, const void*))« umgewandelt werden</p>
</blockquote>
<p>Danke euch</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188806/std-sort-mit-structure-geht-nicht-qsort-soll-man-nicht-wie-dann</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 04:40:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188806.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Aug 2007 11:00:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::sort mit structure geht nicht, qsort soll man nicht - wie dann? on Sat, 04 Aug 2007 11:00:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche ein array mit einer eigens definierten structure zu sortieren,<br />
mit std::sort kann ich nicht und qsort sollte man nicht verwenden....kann mir jemand helfen?</p>
<p>Mein versuch:</p>
<pre><code class="language-cpp">qsort(	(void *) myarr, 
		   	myarr_elements, 
	 		sizeof(MM_DATA), 
			&amp;MyClass::Compare);

//die Compare
int 
MyClass::Compare(const void *a, const void *b)
{
	MM_DATA *ma,*mb;

	ma = (MM_DATA *) a;
	mb = (MM_DATA *) b;

	if (ma-&gt;i &lt;  mb-&gt;i) return(-1);
	if ((ma-&gt;i == mb-&gt;i) &amp;&amp; (ma-&gt;j &lt; mb-&gt;j)) return(-1);
	if ((ma-&gt;i == mb-&gt;i) &amp;&amp; (ma-&gt;j == mb-&gt;j)) return(0);
	return(1);
} 

//meine MM_DATA struktur:

struct MM_DATA 
{
	int i; 			
	int j; 			
	double val; 	
};
</code></pre>
<p>Als Fehlermeldung bekomme ich so:</p>
<blockquote>
<p>Fehler: »int (MyClass::<em>)(const void</em>, const void*)« kann nicht nach »int (<em>)(const void</em>, const void*)« für Argument »4« nach »void qsort(void*, size_t, size_t, int (<em>)(const void</em>, const void*))« umgewandelt werden</p>
</blockquote>
<p>Danke euch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1338585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338585</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Sat, 04 Aug 2007 11:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::sort mit structure geht nicht, qsort soll man nicht - wie dann? on Sat, 04 Aug 2007 11:18:00 GMT]]></title><description><![CDATA[<p>Erstens: Was meinst du mit &quot;std::sort() kann ich nicht verwenden&quot;? Ist es verboten für die Anwendung oder kommst du damit nicht zurecht?</p>
<p>Zweitens: Die Vergleichsfunktion für qsort() muß eine globale Funktion oder statische Methode sein, bei einer normalen Methode gibt es Probleme, den this-Zeiger zuzuordnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1338592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338592</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Aug 2007 11:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::sort mit structure geht nicht, qsort soll man nicht - wie dann? on Sat, 04 Aug 2007 11:31:45 GMT]]></title><description><![CDATA[<p>zu std::sort()</p>
<p>ich kann doch std::sort() nicht mit einem structure - gefüllten elemente aufrufen...bei mir kommt als fehler:</p>
<pre><code>Fehler: keine passende Funktion für Aufruf von »sort(MM_DATA*&amp;, int&amp;)«
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1338605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338605</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Sat, 04 Aug 2007 11:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to std::sort mit structure geht nicht, qsort soll man nicht - wie dann? on Sat, 04 Aug 2007 11:37:28 GMT]]></title><description><![CDATA[<p>Wie hast du denn sort() aufgerufen? Richtig wäre:</p>
<pre><code class="language-cpp">MM_DATA mein_array[len];
sort(mein_array,mein_array+len);//erwartet, die Elemente per (überladenen) op&lt; vergleichen zu können

sort(mein_array,mein_array+len,comparer);//erwartet, daß comparer() mit zwei MM_DATA's aufgerufen werden kann
//und etwas bool'sches zurückliefert - also bool comparer(const MM_DATA&amp;,const MM_DATA&amp;); - als globale Funktion
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1338610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338610</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Aug 2007 11:37:28 GMT</pubDate></item></channel></rss>