<?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[Strings sortieren lassen mit qsort]]></title><description><![CDATA[<p>Hi,<br />
wir haben die Aufgabe bekommen Zeichenketten zu sortieren unter anderem auch mit qsort allerdings geht das nicht wirklich <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>Was ist falsch bzw. wie kann ich Strings mittels der qsort sorieren (bzw. mit einem in C++ vorhandenem Quicksort)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int compare(const void * a, const void * b){

			string a1 = *((string*)a);

 		 	string b1 = *((string*)b);

			if(a1 &lt; b1) return 1;
			if(a1 &gt; b1) return -1;	
			if(a1 == b1) return 0;
		}

int main(){
	string bla[9];
	bla[0] = &quot;v1&quot;;
	bla[1] = &quot;a1&quot;;
	bla[2] = &quot;a7&quot;;
	bla[3] = &quot;zz&quot;;
	bla[4] = &quot;zu&quot;;
	bla[5] = &quot;6h&quot;;
	bla[6] = &quot;k1&quot;;
	bla[7] = &quot;uu&quot;;
	bla[8] = &quot;ah&quot;;
	bla[9] = &quot;hh&quot;;
	qsort (bla, 10, sizeof(string), compare);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/180449/strings-sortieren-lassen-mit-qsort</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 00:37:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180449.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 May 2007 21:33:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Wed, 02 May 2007 21:33:14 GMT]]></title><description><![CDATA[<p>Hi,<br />
wir haben die Aufgabe bekommen Zeichenketten zu sortieren unter anderem auch mit qsort allerdings geht das nicht wirklich <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>Was ist falsch bzw. wie kann ich Strings mittels der qsort sorieren (bzw. mit einem in C++ vorhandenem Quicksort)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int compare(const void * a, const void * b){

			string a1 = *((string*)a);

 		 	string b1 = *((string*)b);

			if(a1 &lt; b1) return 1;
			if(a1 &gt; b1) return -1;	
			if(a1 == b1) return 0;
		}

int main(){
	string bla[9];
	bla[0] = &quot;v1&quot;;
	bla[1] = &quot;a1&quot;;
	bla[2] = &quot;a7&quot;;
	bla[3] = &quot;zz&quot;;
	bla[4] = &quot;zu&quot;;
	bla[5] = &quot;6h&quot;;
	bla[6] = &quot;k1&quot;;
	bla[7] = &quot;uu&quot;;
	bla[8] = &quot;ah&quot;;
	bla[9] = &quot;hh&quot;;
	qsort (bla, 10, sizeof(string), compare);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1277854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277854</guid><dc:creator><![CDATA[wdsl]]></dc:creator><pubDate>Wed, 02 May 2007 21:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Wed, 02 May 2007 22:07:33 GMT]]></title><description><![CDATA[<p>wenn du dein array 10 elemente groß machst (du verwendest ja auch 10 strings) dann gehts. dann drehst noch die vorzeichen in deiner comparemethode um und der sortiert dir das supi aufsteigend alphabethisch. <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/1277861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277861</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Wed, 02 May 2007 22:07:33 GMT</pubDate></item><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Thu, 03 May 2007 06:27:51 GMT]]></title><description><![CDATA[<p>Erstens: qsort() ist eine C-Funktion und arbeitet nicht besonders gut mit C++ Objekten zusammen (ausführlicher: Es umgeht beim Umsortieren des Arrays alle wichtigen Methoden der String-Klasse - und kann dir damit deine Daten komplett pulverisieren). In C++ verwendet man sort(), stable_sort() oder partial_sort() (die unterscheiden sich vor allem in Detail-Fragen - sort() arbeitet idR mit QuickSort).</p>
<p>Zweitens: In einem 'string bla[9];' gibt es kein Element 'bla[9]'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1277932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1277932</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 03 May 2007 06:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Tue, 08 May 2007 08:30:20 GMT]]></title><description><![CDATA[<p><strong>Aufruf in der main.cpp:</strong></p>
<pre><code class="language-cpp">libqsort obj_libqsort;
	obj_libqsort.sorte( );
</code></pre>
<p><strong>Meine libqsort.h:</strong></p>
<pre><code class="language-cpp">class libqsort {

private:
              int ticksAnz;
              int vglAnz; 

public:
		libqsort();

		int compare(const void * a, const void * b);

                int sorte ();

                int getTicks();
                int getVgl();
};
</code></pre>
<p><strong>Meine libqsort.cpp:</strong></p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &quot;libqsort.h&quot;

using namespace std;

libqsort::libqsort(){
	ticksAnz=0;
	vglAnz=0; 
}

int libqsort::compare(const void * a, const void * b){

            string a1 = *((string*)a);

              string b1 = *((string*)b);

            if(a1 &lt; b1) return 1;
            if(a1 &gt; b1) return -1;   
            if(a1 == b1) return 0;
        } 

int libqsort::sorte(){
	string bla[10];
	bla[0] = &quot;v1&quot;;
	bla[1] = &quot;a1&quot;;
	bla[2] = &quot;a7&quot;;
	bla[3] = &quot;zz&quot;;
	bla[4] = &quot;zu&quot;;
	bla[5] = &quot;6h&quot;;
	bla[6] = &quot;k1j&quot;;
	bla[7] = &quot;uu&quot;;
	bla[8] = &quot;ah&quot;;
	bla[9] = &quot;hh&quot;;
	qsort (bla, 10, sizeof(string), compare);

	for(int i = 0; i &lt; 10; i++){
		cout &lt;&lt; bla[i] &lt;&lt; endl;
	}
	return 0;
}

int libqsort::getTicks() { return ticksAnz; }
int libqsort::getVgl()   { return vglAnz;   }
</code></pre>
<p><strong>Meine Fehlermeldung:</strong></p>
<blockquote>
<p>g++ -c libqsort.cpp<br />
libqsort.cpp: In member function ‘int libqsort::sorte()’:<br />
libqsort.cpp:37: error: argument of type ‘int (libqsort::)(const void*, const void*)’ does not match ‘int (<em>)(const void</em>, const void*)’<br />
make: *** [libqsort.o] Error 1</p>
</blockquote>
<p><strong>Zusatzinfos:</strong><br />
Kompilieren tu ich mit dem g++ und das Beispiel von oben klappt mit euren Tipps ohne Probleme.</p>
<p><strong>Frage:</strong><br />
Was ist daran falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280707</guid><dc:creator><![CDATA[wdsl]]></dc:creator><pubDate>Tue, 08 May 2007 08:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Tue, 08 May 2007 08:35:11 GMT]]></title><description><![CDATA[<p>Erstens: Du kannst nur globale Funktionen und statische Methoden als Funktionszeiger herumreichen. &quot;Normale&quot; Methoden kannst du nur als Methodenzeiger weitergeben, aber mit denen kann qsort() nichts anfangen.</p>
<p>Zweitens: Versuch besser nicht, C++ Objekte mit C Funktionen zu bearbeiten. C hat keine Ahnung von Konstruktoren, Zuweisungsoperatoren und änhlichen Konzepten, also besteht die Gefahr, daß es dir deine Strings klammheimlich in Stücke schlägt. Nimm besser std::sort() (da brauchst du nicht einmal eine Hilfsfunktion wie 'compare()', um zwei Strings zu vergleichen ;)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280710</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 08 May 2007 08:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Tue, 08 May 2007 10:45:34 GMT]]></title><description><![CDATA[<p>Ich habs jetzt verändert:</p>
<p><strong>Teil der cpp Datei:</strong></p>
<pre><code class="language-cpp">bool libqsort::compare(std::string string1, std::string string2)
{
    	if(string1 &gt; string2)return false;
	else return true;
}

int libqsort::sort(std::vector&lt;std::string&gt; SortString){
	std::sort(SortString.begin(),SortString.end(), libqsort::compare);

	for( int i = 0, limit = SortString.size(); i &lt; limit; ++i )
	{
		std::cout &lt;&lt; SortString[ i ].c_str() &lt;&lt; std::endl;
	}
	return 0;
}
</code></pre>
<p><strong>in der h datei:</strong></p>
<pre><code class="language-cpp">bool compare(std::string, std::string);
</code></pre>
<p><strong>Jetzt habe ich diese Fehlermeldung (gekürzt):</strong></p>
<blockquote>
<p>g++ -c libqsort.cpp<br />
/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 = __gnu_cxx::__normal_iterator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;<em>, std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, _Compare = bool (libqsort::</em>)(std::string, std::string)]’:<br />
/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 = __gnu_cxx::__normal_iterator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;<em>, std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, _Size = int, _Compare = bool (libqsort::</em>)(std::string, std::string)]’<br />
/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 = __gnu_cxx::__normal_iterator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;<em>, std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, _Compare = bool (libqsort::</em>)(std::string, std::string)]’<br />
libqsort.cpp:21: instantiated from here<br />
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_algo.h:2477: error: must use ‘.<em>’ or ‘-&gt;</em>’ to call pointer-to-member function in ‘__comp (...)’</p>
</blockquote>
<p>So jetzt das Problem: Wenn ich die Compare Funktion Global habe gehts in der Klasse allerdings nicht. Leider brauche ich die um die Anzahl der Vergleiche zu bekommen.</p>
<p>vielen Dank<br />
wdsl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280782</guid><dc:creator><![CDATA[wdsl]]></dc:creator><pubDate>Tue, 08 May 2007 10:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to Strings sortieren lassen mit qsort on Tue, 08 May 2007 10:56:05 GMT]]></title><description><![CDATA[<p>Wenn du es unbedingt in der Klasse haben willst, setz' mal ein 'static' vor die Methode (auch std::sort() tut sich schwer mit Methodenzeigern - weil es nicht weiß, was es als 'this' übergeben soll).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280786</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 08 May 2007 10:56:05 GMT</pubDate></item></channel></rss>