<?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[sortproblem mit der stl]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich will mit der STL sortieren, das ist prinzipiell einfach:</p>
<pre><code class="language-cpp">double a[n];
// schreibe irgendwas in a rein
sort( a , a+n );
// oder auch sort( a , a+n , comp );
</code></pre>
<p>Mein problem ist jetzt, wie ich gleichzeitig einen zweites beliebiges array b in die gleiche Reihenfolge wie a bringe, also sowas</p>
<pre><code>a    b
2.5  1
1.0  2
1.5  3
0.5  4
</code></pre>
<p>soll danach</p>
<pre><code>a    b
0.5  4
1.0  2
1.5  3
2.5  1
</code></pre>
<p>werden. Sieht jemand eine Moeglichkeit wie sowas elegant mit der STL geloest werden kann? Vielleicht wenn man iteratoren neu definiert?</p>
<p>Zur Not kann man das auch loesen indem man eine Struktur erstellt, die jeweils eine Zeile enthaelt und dann eine Vergleichsfunktion definiert. Ist dann allerdings nicht mehr so elegant.</p>
<p>Danke fuer Eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227271/sortproblem-mit-der-stl</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 18:40:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227271.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Nov 2008 10:08:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 10:09:07 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich will mit der STL sortieren, das ist prinzipiell einfach:</p>
<pre><code class="language-cpp">double a[n];
// schreibe irgendwas in a rein
sort( a , a+n );
// oder auch sort( a , a+n , comp );
</code></pre>
<p>Mein problem ist jetzt, wie ich gleichzeitig einen zweites beliebiges array b in die gleiche Reihenfolge wie a bringe, also sowas</p>
<pre><code>a    b
2.5  1
1.0  2
1.5  3
0.5  4
</code></pre>
<p>soll danach</p>
<pre><code>a    b
0.5  4
1.0  2
1.5  3
2.5  1
</code></pre>
<p>werden. Sieht jemand eine Moeglichkeit wie sowas elegant mit der STL geloest werden kann? Vielleicht wenn man iteratoren neu definiert?</p>
<p>Zur Not kann man das auch loesen indem man eine Struktur erstellt, die jeweils eine Zeile enthaelt und dann eine Vergleichsfunktion definiert. Ist dann allerdings nicht mehr so elegant.</p>
<p>Danke fuer Eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613946</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 10:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 10:21:27 GMT]]></title><description><![CDATA[<p>headmyshoulder schrieb:</p>
<blockquote>
<p>Mein problem ist jetzt, wie ich gleichzeitig einen zweites beliebiges array b in die gleiche Reihenfolge wie a bringe, also sowas...</p>
<p>...Zur Not kann man das auch loesen indem man eine Struktur erstellt, die jeweils eine Zeile enthaelt und dann eine Vergleichsfunktion definiert. Ist dann allerdings nicht mehr so elegant.</p>
</blockquote>
<p>Doch, genau das ist es sogar eher: elegant. Zumindestens in der von dir beschriebenen Situation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613953</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 13 Nov 2008 10:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 10:24:21 GMT]]></title><description><![CDATA[<p>Eine multi_sort Funktion wäre aber dennoch mal eine nette Sache. Aber hält einen ja keiner davon ab nicht eine selbst zu schreiben. <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/1613954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613954</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 13 Nov 2008 10:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 10:25:52 GMT]]></title><description><![CDATA[<p>Ich benutze ziemlich oft Zeigerarithmetik, die wuerde man dann durch das Definieren von Strukturen nicht mehr benutzen koennen, bzw. muesste immer zwischen struct und array hin- und herspringen.</p>
<p>Prinzipiell muesste ja nur die swap Funktion im sort geaendert werden, dann waere das geloest. Ist vielleicht nicht mehr die schnellste Variante dann, aber er waere immer noch recht kleiner kompakter code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613955</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 10:25:52 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 10:28:30 GMT]]></title><description><![CDATA[<p>Ahh, ich hab grad gesehen, dass die boost library sowas kann. Wenn ich weiss wie das funktioniert sag ich bescheid, es sei denn jemand ist schneller.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613958</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 10:28:30 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 11:08:26 GMT]]></title><description><![CDATA[<p>headmyshoulder schrieb:</p>
<blockquote>
<p>Ich benutze ziemlich oft Zeigerarithmetik, die wuerde man dann durch das Definieren von Strukturen nicht mehr benutzen koennen, bzw. muesste immer zwischen struct und array hin- und herspringen.</p>
</blockquote>
<p>Was soll da nicht mehr gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1613994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1613994</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 13 Nov 2008 11:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 12:26:51 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>headmyshoulder schrieb:</p>
<blockquote>
<p>Ich benutze ziemlich oft Zeigerarithmetik, die wuerde man dann durch das Definieren von Strukturen nicht mehr benutzen koennen, bzw. muesste immer zwischen struct und array hin- und herspringen.</p>
</blockquote>
<p>Was soll da nicht mehr gehen?</p>
</blockquote>
<p>Im oben genannten beispiel muesste ich dann sowas anlegen:</p>
<pre><code class="language-cpp">struct A {
  double a ;
  int b;
}

bool Comp( struct a , struct b ) { return a.a &lt; b.a ; };

A a[n]
// populate A
sort( A , A+n , Comp );
</code></pre>
<p>Meistens benutze ich aber double oder int arrays:</p>
<pre><code class="language-cpp">double *a = new double[n];
int *b = new double[n];
</code></pre>
<p>und die jedesmal in eine struktur zu packen gefaellt mir nicht so gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614054</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 12:26:51 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 12:39:18 GMT]]></title><description><![CDATA[<p>headmyshoulder schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>headmyshoulder schrieb:</p>
<blockquote>
<p>Ich benutze ziemlich oft Zeigerarithmetik, die wuerde man dann durch das Definieren von Strukturen nicht mehr benutzen koennen, bzw. muesste immer zwischen struct und array hin- und herspringen.</p>
</blockquote>
<p>Was soll da nicht mehr gehen?</p>
</blockquote>
<p>Im oben genannten beispiel muesste ich dann sowas anlegen:</p>
<pre><code class="language-cpp">struct A {
  double a ;
  int b;
}

bool Comp( struct a , struct b ) { return a.a &lt; b.a ; };

A a[n]
// populate A
sort( A , A+n , Comp );
</code></pre>
<p>Meistens benutze ich aber double oder int arrays:</p>
<pre><code class="language-cpp">double *a = new double[n];
int *b = new double[n];
</code></pre>
<p>und die jedesmal in eine struktur zu packen gefaellt mir nicht so gut.</p>
</blockquote>
<p>Was spricht denn gegen:</p>
<pre><code class="language-cpp">struct A {
  double a ;
  int b;
}

bool Comp( struct a , struct b ) { return a.a &lt; b.a ; };

A *a = new A[n];
// populate A
sort( a , a+n , Comp );
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614063</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 13 Nov 2008 12:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 12:42:53 GMT]]></title><description><![CDATA[<p>Du kannst auch eine Vergleichsfunktion mit double's schreiben..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614066</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 13 Nov 2008 12:42:53 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 12:43:21 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Was spricht denn gegen:</p>
<pre><code class="language-cpp">struct A {
  double a ;
  int b;
}

bool Comp( struct a , struct b ) { return a.a &lt; b.a ; };

A *a = new A[n];
// populate A
sort( a , a+n , Comp );
</code></pre>
<p>?</p>
</blockquote>
<p>Eigentlich nichts. Mich wuerde trotzdem mal interessieren, ob es auch anderes geht .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614069</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 12:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 12:44:16 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Du kannst auch eine Vergleichsfunktion mit double's schreiben..</p>
</blockquote>
<p>Wie meinst Du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614070</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 12:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 12:52:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Eigentlich nichts. Mich wuerde trotzdem mal interessieren, ob es auch anderes geht .</p>
</blockquote>
<p>Du solltest mal ein wenig konkreter werden, was du willst und was dein Problem ist.</p>
<p>Schlussendlich kannst du das auch mit einem std::pair, std::tr1::tuple lösen, oder was auch immer, aber die Daten irgendwie beieinander zu halten musst du offensichtlich ja. Und die getrennt zu speichern und dann mit einem komplizierten Algorithmus das wieder herbiegen zu wollen ist schwachsinn. Das gezeigte ist elegant sicher und kann auch leicht erweitert werden.<br />
Also bitte ein wenig konkreter, was dir nicht passt, dann können wird dir auch helfen, aber &quot;ein geht das auch anderst?&quot; bringt niemandem etwas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614077</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 13 Nov 2008 12:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 13:10:05 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Schlussendlich kannst du das auch mit einem std::pair, std::tr1::tuple lösen, oder was auch immer, aber die Daten irgendwie beieinander zu halten musst du offensichtlich ja. Und die getrennt zu speichern und dann mit einem komplizierten Algorithmus das wieder herbiegen zu wollen ist schwachsinn. Das gezeigte ist elegant sicher und kann auch leicht erweitert werden.<br />
Also bitte ein wenig konkreter, was dir nicht passt, dann können wird dir auch helfen, aber &quot;ein geht das auch anderst?&quot; bringt niemandem etwas.</p>
</blockquote>
<p>Ok, Du hast Recht ich werds ein bisschen ausfuehrlicher machen. Das konkrete Beispiel ist Algorithmus zur Eigenwert- und funktionsberechnung einer Matrix. Meistens werden dann die Eigenwerte sortiert und dazu muessen auch die entsprechen Eigenvektoren genauso mit sortiert werden. Im Code sieht das bei mir dann so aus (ja, kann man auch anders machen):</p>
<pre><code class="language-cpp">const int n = 10;
double matrix[n*n];
// populate matrix
double eval[n];
double evec[n*n];
CalcEigensystem( matrix , eval , evec );
</code></pre>
<p>Die Eigenwerte kann ich jetzt schnell mit</p>
<pre><code class="language-cpp">sort(eval,eval+n);
</code></pre>
<p>sortieren, allerdings muss das auch mit den Eigenvektoren in der gleichen Reihenfolge wie die Eigenwerte sein. Ich hab keine Lust da erst eine Struktur zu fuellen, die sortieren, und dann alles wieder in die urspruenglichen arrays zu schreiben. Es gibt viele Probleme dieser Art (sortieren einer Matrix nach einer Spalte, Sortieren von daten...) und ich wollte mal generell so fragen ob es auch clevere Methoden mit der stl gibt ohne vorher strukturen zu erstellen oder die sort routinen selbst zu schreiben. Das Problem scheint mir auch sehr generell zu sein und eine einfache Loesung gibts hoffentlich dafuer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614096</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 13:10:05 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 13:18:06 GMT]]></title><description><![CDATA[<p>Wie schon gesagt, du kannst auch eine Vergleichsfunktion schreiben, die dir das übernimmt.</p>
<pre><code class="language-cpp">bool Comp1( double a , double b ) { return a &lt; b ; };
bool Comp2 ( double a , double b ) { return a &lt; (b+1) ; };
..
</code></pre>
<p>So kannst du dir die Bedingung, nach der sortiert wird selber bestimmen. (Wenn du noch mehr Argumente brauchst, musst du dir mal Binder anschauen, oder auch Funktoren nutzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614104</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 13 Nov 2008 13:18:06 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 13:49:47 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Wie schon gesagt, du kannst auch eine Vergleichsfunktion schreiben, die dir das übernimmt.</p>
<pre><code class="language-cpp">bool Comp1( double a , double b ) { return a &lt; b ; };
bool Comp2 ( double a , double b ) { return a &lt; (b+1) ; };
..
</code></pre>
<p>So kannst du dir die Bedingung, nach der sortiert wird selber bestimmen. (Wenn du noch mehr Argumente brauchst, musst du dir mal Binder anschauen, oder auch Funktoren nutzen).</p>
</blockquote>
<p>Hmm, wie man die Vergleichsfunktion aendert ist mir klar, aber dadurch wird ein anderes array trotzdem nicht in die Reihenfolge wie ein anderes array gebracht. Oder was meinst Du mit Bindern und Funktoren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614131</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Thu, 13 Nov 2008 13:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Thu, 13 Nov 2008 19:19:36 GMT]]></title><description><![CDATA[<p>Für mich besteht die sauberste Lösung auch darin, ein Struct mit mehreren Werten (oder gleich <code>std::pair</code> ) zu erstellen. Dann kann man ein Array dieses Typs sortieren lassen.</p>
<p>Mit Vergleichskriterien ginge das schon, aber das ist auch nicht unbedingt einfacher. Man müsste eine eigene Klasse schreiben, die die Arrays wrappt und Iteratoren bereitstellt, um das STL-Konzept einzuhalten und korrekt sortiert zu werden. Ich weiss nicht, ob sich der Aufwand lohnt.</p>
<p>Willst du überhaupt rohe Arrays verwenden? So ist es beispielsweise mühsam, eine Spalte zu übergeben. Ein <code>std::tr1::array</code> könnte man verschachteln und so besser auf ein Unterarray (das einer Spalte entspricht) zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614335</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 13 Nov 2008 19:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 08:24:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Mit Vergleichskriterien ginge das schon, aber das ist auch nicht unbedingt einfacher. Man müsste eine eigene Klasse schreiben, die die Arrays wrappt und Iteratoren bereitstellt, um das STL-Konzept einzuhalten und korrekt sortiert zu werden. Ich weiss nicht, ob sich der Aufwand lohnt.</p>
</blockquote>
<p>Es ginge, denke ich auch einfacher, wenn er da nur einen Zeiger auf den anderen Container übergibt. Schliesslich weiss er ja, wie viele Elemente dort drin sind und dann ginge das schon, aber das ist alles andere als sauber. Ich würde auch sagen, dass in dem Fall das ganze in ein struct zu werfen und dann zu sortieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614534</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 14 Nov 2008 08:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 08:37:23 GMT]]></title><description><![CDATA[<p>Oder selbst einen Sortieralgorithmus implementieren der eben genau sowas beachtet. Nicht aufwändig und meiner Meinung nach sauberer als das krampfhaft mit der STL über irgendwelche Umwege und Umkopieren von Elementen in Strukturen etc. lösen zu wollen.</p>
<p>Wenn man std::sort noch einen &quot;swap&quot;-Operator/Funktor mitgeben könnte, wäre das natürlich alles kein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614542</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 14 Nov 2008 08:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 13:11:03 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Wenn man std::sort noch einen &quot;swap&quot;-Operator/Funktor mitgeben könnte, wäre das natürlich alles kein Problem.</p>
</blockquote>
<p>Prinzipiell koennte man einen eigenen Iterator in die sort funktion stecken, der bei iter_swap gleichzeitig die andere Elemente mit swap. Ist aber nicht so schoen dafuer noch einen eigenen Iterator zu implementieren.</p>
<p>Ich hab aber ne einfachere Loesung fuer mich gefunden. Ich erstell einfach nur ein Index array, in welchem die Sortierreihenfolge drinsteckt:</p>
<pre><code class="language-cpp">template&lt;class T&gt; void GetIndexSet( T* val , int *index , int n )
{
  vector&lt; pair&lt;T,int&gt; &gt; temp;
  for( int i=0 ; i&lt;n ; i++ ) temp.push_back( pair&lt;T,int&gt;( val[i] , i ) ) ;
  sort( temp.begin() , temp.end() );
  for( int i=0 ; i&lt;n ; i++ ) index[i] = temp[i].second;
}
</code></pre>
<p>Jetzt kann man entweder alles nach der Ordnung sortieren:</p>
<pre><code class="language-cpp">GetIndexSet( array , index , n )
for( int i=0 ; i&lt;n ; i++ ){
  temp1[i] = array[ index[i] ];
  temp2[i] = array2[ index[i] ];
  ...
}
array = temp1;  // oder sowas aehnliches
</code></pre>
<p>oder falls man das nicht braucht, kann man trotzdem auf die gewuenschte Sortierung zugreifen:</p>
<pre><code class="language-cpp">for( int i=0 ; i&lt;n ; i++ ) DoSomething( array[ order[i] ] );
</code></pre>
<p>Eventuell koennte man die GetIndexSet Funktion noch auf beliebige Iteratoren verallgemeinern und eine Vergleichsfunktion/klasse verallgemeinern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614643</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Fri, 14 Nov 2008 13:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 13:16:54 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Willst du überhaupt rohe Arrays verwenden? So ist es beispielsweise mühsam, eine Spalte zu übergeben. Ein <code>std::tr1::array</code> könnte man verschachteln und so besser auf ein Unterarray (das einer Spalte entspricht) zugreifen.</p>
</blockquote>
<p>Das mach ich schon die ganze Zeit^^. Wie gesagt, das sind meist numerische Daten. Unterarrays bilden ist dabei recht einfach, man uebergibt dem sort ja auch nur die Start- und Endpointer, bzw. Iteratoren. <code>std::tr1::array</code> seh ich grad zum ersten Mal, sieht ganz interessant aus, obwohl es eventuell problem mit nicht <code>const</code> Groessen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614650</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Fri, 14 Nov 2008 13:16:54 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 13:19:46 GMT]]></title><description><![CDATA[<p>headmyshoulder schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Willst du überhaupt rohe Arrays verwenden? So ist es beispielsweise mühsam, eine Spalte zu übergeben. Ein <code>std::tr1::array</code> könnte man verschachteln und so besser auf ein Unterarray (das einer Spalte entspricht) zugreifen.</p>
</blockquote>
<p>Das mach ich schon die ganze Zeit^^. Wie gesagt, das sind meist numerische Daten. Unterarrays bilden ist dabei recht einfach, man uebergibt dem sort ja auch nur die Start- und Endpointer, bzw. Iteratoren. <code>std::tr1::array</code> seh ich grad zum ersten Mal, sieht ganz interessant aus, obwohl es eventuell problem mit nicht <code>const</code> Groessen hat.</p>
</blockquote>
<p>std::tr1::array aka boost::array ist dazu gedacht eine STL ähnliche Schnittstelle für arrays zu bieten.<br />
<a href="http://www.boost.org/doc/libs/1_37_0/doc/html/array.html" rel="nofollow">http://www.boost.org/doc/libs/1_37_0/doc/html/array.html</a></p>
<p>Somit, wenn du variable Grössen hast, kannst du bei std::vector bleiben/wechseln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614658</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 14 Nov 2008 13:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 14:17:00 GMT]]></title><description><![CDATA[<p>headmyshoulder schrieb:</p>
<blockquote>
<p><code>std::tr1::array</code> seh ich grad zum ersten Mal, sieht ganz interessant aus, obwohl es eventuell problem mit nicht <code>const</code> Groessen hat.</p>
</blockquote>
<p>Die Klasse <code>std::tr1::array</code> verhält sich grundsätzlich wie normale Arrays, hat aber noch einige Funktionalität mehr. Beispielsweise kann es kopiert und zugewiesen werden und bietet STL-kompatible Funktionen wie <code>begin()</code> , <code>end()</code> , <code>size()</code> . Du arbeitest lieber damit als mit rohen Arrays, im Debug-Modus erhältst du auch Assertions beim Schreiben über Arraygrenzen.</p>
<p>Für <code>std::tr1::array</code> wurde der Weg einer Initialisierungsliste ausgewählt (dies, um noch ähnlicher zu Arrays zu sein). Das führt dazu, dass keine selbst definierten Konstruktoren bereitgestellt werden können. Eventuell muss man das Array daher mit <code>std::fill()</code> oder Ähnlichem initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614699</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 14 Nov 2008 14:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Fri, 14 Nov 2008 16:10:45 GMT]]></title><description><![CDATA[<blockquote>
<p>Mein problem ist jetzt, wie ich gleichzeitig einen zweites beliebiges array b in die gleiche Reihenfolge wie a bringe</p>
</blockquote>
<p>Es gibt in der boost den zip_iterator, der iteratoren aus verschiedenen Containern mit einander verknüpft.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1614759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1614759</guid><dc:creator><![CDATA[Drehleiter]]></dc:creator><pubDate>Fri, 14 Nov 2008 16:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Mon, 17 Nov 2008 12:44:24 GMT]]></title><description><![CDATA[<p>headmyshoulder schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Einfach ein struct-template das als Konstruktor-Parameter eine Referenz auf den zu sortierenden Container bekommt schreiben. Dieser überlädt dann den bool operator()(int, int) und vergleicht da drin denn die Elemente des Referenzcontainers die mit den beiden Parameter-ints ausgezeichnet sind.<br />
Die eigentliche Sortierfunktion (std::sort) rufst du dann auf einen neu erstellen Index-Container auf, der die Elemente 0 - (toSort.size() - 1) hat, wobei toSort der zu sortierende Container ist.</p>
<p>Anschließend kannst du entweder über den Index-Array auf die Elemente der &quot;sortierten&quot; Arrays zugreifen oder eben die selbst dann umsortieren. An welche Stelle welches Element gehört siehst du ja am Index-Array/Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615927</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 17 Nov 2008 12:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to sortproblem mit der stl on Sun, 14 Dec 2008 10:20:55 GMT]]></title><description><![CDATA[<p>Drehleiter schrieb:</p>
<blockquote>
<blockquote>
<p>Mein problem ist jetzt, wie ich gleichzeitig einen zweites beliebiges array b in die gleiche Reihenfolge wie a bringe</p>
</blockquote>
<p>Es gibt in der boost den zip_iterator, der iteratoren aus verschiedenen Containern mit einander verknüpft.<br />
Gruß</p>
</blockquote>
<p>Der Zip Iterator lässt sich leider nicht sortieren :<a href="http://lists.boost.org/Archives/boost/2004/07/68758.php" rel="nofollow">http://lists.boost.org/Archives/boost/2004/07/68758.php</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1630246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1630246</guid><dc:creator><![CDATA[headmyshoulder]]></dc:creator><pubDate>Sun, 14 Dec 2008 10:20:55 GMT</pubDate></item></channel></rss>