<?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[stl: list of vector sortieren]]></title><description><![CDATA[<p>Also ich hab einen Datenbereich, der wie folgt aussieht:</p>
<pre><code class="language-cpp">list&lt;vector&lt;string&gt;&gt; data;
</code></pre>
<p>Dieser ist in meiner Klasse cDBSet enthalten.<br />
weiterhin hab ich einen</p>
<pre><code class="language-cpp">vector&lt;int&gt; sorted_by;
</code></pre>
<p>der mir sagt, in welcher Reihenfolge meine &quot;Datenzeilen&quot; (vector&lt;string&gt;) sortiert werden sollen.<br />
Die Klasse cDBSet beinhaltet folgende Funktionen:</p>
<pre><code class="language-cpp">int cDBSet::sortby (vector&lt;int&gt; cols)
{
    sorted_by = cols;
    // subset_left und subset_right sind iteratoren von data
    std::sort (subset_left,subset_right, cDBSet::itr_sort)
}

static int cDBSet::itr_sort(const void *a, const void *b)
{
    vector&lt;string&gt;::iterator  x = reinterpret_cast&lt;vector&lt;string&gt;::iterator&gt;(a),
                              y = reinterpret_cast&lt;vector&lt;string&gt;::iterator&gt;(b);
    vector&lt;int&gt;::iterator item;

    for (item = sorted_by.begin(); item &lt;= sorted_by.end(); item++)
    {
        if (x[*item] &lt; y[*item])         
              return -1;
        if (x[*item] &gt; y[*item])         
              return +1;
    }
    return 0;
}
</code></pre>
<p>Mein Problem ist jetzt, daß der Compiler mit den Iteratoren nicht klar kommt. Leider kann ich das Compilelog hier nicht posten, weil ich mit meinem Laptop derzeit nicht ins Netz komme.<br />
Vielleicht findet trotzdem wer meinen Fehler...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120522/stl-list-of-vector-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 09:24:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120522.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Sep 2005 08:28:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 08:44:14 GMT]]></title><description><![CDATA[<p>Also ich hab einen Datenbereich, der wie folgt aussieht:</p>
<pre><code class="language-cpp">list&lt;vector&lt;string&gt;&gt; data;
</code></pre>
<p>Dieser ist in meiner Klasse cDBSet enthalten.<br />
weiterhin hab ich einen</p>
<pre><code class="language-cpp">vector&lt;int&gt; sorted_by;
</code></pre>
<p>der mir sagt, in welcher Reihenfolge meine &quot;Datenzeilen&quot; (vector&lt;string&gt;) sortiert werden sollen.<br />
Die Klasse cDBSet beinhaltet folgende Funktionen:</p>
<pre><code class="language-cpp">int cDBSet::sortby (vector&lt;int&gt; cols)
{
    sorted_by = cols;
    // subset_left und subset_right sind iteratoren von data
    std::sort (subset_left,subset_right, cDBSet::itr_sort)
}

static int cDBSet::itr_sort(const void *a, const void *b)
{
    vector&lt;string&gt;::iterator  x = reinterpret_cast&lt;vector&lt;string&gt;::iterator&gt;(a),
                              y = reinterpret_cast&lt;vector&lt;string&gt;::iterator&gt;(b);
    vector&lt;int&gt;::iterator item;

    for (item = sorted_by.begin(); item &lt;= sorted_by.end(); item++)
    {
        if (x[*item] &lt; y[*item])         
              return -1;
        if (x[*item] &gt; y[*item])         
              return +1;
    }
    return 0;
}
</code></pre>
<p>Mein Problem ist jetzt, daß der Compiler mit den Iteratoren nicht klar kommt. Leider kann ich das Compilelog hier nicht posten, weil ich mit meinem Laptop derzeit nicht ins Netz komme.<br />
Vielleicht findet trotzdem wer meinen Fehler...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871712</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Wed, 14 Sep 2005 08:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 09:20:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">static int cDBSet::itr_sort(const void *a, const void *b)
</code></pre>
<p>wtf? wieso void*?</p>
<p>mach mal</p>
<pre><code class="language-cpp">template&lt;class Iterator&gt;
static int cDBSet::itr_sort(const Iterator a, const Iterator b)
</code></pre>
<p>nächster punkt: du solltest bool zurückgeben. true wenn das erste objekt kleiner ist, sonst false.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871744</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 14 Sep 2005 09:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 09:47:25 GMT]]></title><description><![CDATA[<p>wozu bitte jetzt nen template und woher nehm ich dann den Typ dafür?</p>
<p>daß die sortierfunktion nur true oder false zurückgeben soll, hab ich nach etlichem Suchen jetzt auch gefunden, aber trotzdem hab ich immernoch nen Problem.<br />
Der Compiler bringt immernoch nen Fehler. angeblich sollen die Iteratoren (parameter 1 und 2) keinen Operator- besitzen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871775</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Wed, 14 Sep 2005 09:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 14:06:21 GMT]]></title><description><![CDATA[<p>versuchs mal so:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
static int cDBSet::itr_sort(const T&amp; x, const T&amp; y)
{

    for (vector&lt;int&gt;::iterator item = sorted_by.begin(); item != sorted_by.end(); item++)
    {
        if (x[*item] &gt;= y[*item])        
              return 0;
    }
    return 1;
}
</code></pre>
<p>die funktion muss folgenden ansprüchen genügen:</p>
<p><a href="http://www.sgi.com/tech/stl/LessThanComparable.html" rel="nofollow">http://www.sgi.com/tech/stl/LessThanComparable.html</a></p>
<p>und hier ein Beispiel:</p>
<p><a href="http://www.sgi.com/tech/stl/less.html" rel="nofollow">http://www.sgi.com/tech/stl/less.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/872068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872068</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 14 Sep 2005 14:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 14:10:58 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>die funktion muss folgenden ansprüchen genügen:</p>
<p><a href="http://www.sgi.com/tech/stl/LessThanComparable.html" rel="nofollow">http://www.sgi.com/tech/stl/LessThanComparable.html</a></p>
</blockquote>
<p>Nö. Sondern denen hier:<br />
<a href="http://www.sgi.com/tech/stl/StrictWeakOrdering.html" rel="nofollow">http://www.sgi.com/tech/stl/StrictWeakOrdering.html</a></p>
<p>Die Elemente selbst müssen LessThanComparable sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/872074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872074</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 14 Sep 2005 14:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 14:13:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Also ich hab einen Datenbereich, der wie folgt aussieht:</p>
<pre><code class="language-cpp">list&lt;vector&lt;string&gt;&gt; data;
</code></pre>
</blockquote>
<p>Hoffentlich sieht das auch so aus :</p>
<pre><code class="language-cpp">list&lt; vector&lt;string&gt; &gt; data;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/872075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872075</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 14 Sep 2005 14:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 14:39:55 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>die funktion muss folgenden ansprüchen genügen:</p>
<p><a href="http://www.sgi.com/tech/stl/LessThanComparable.html" rel="nofollow">http://www.sgi.com/tech/stl/LessThanComparable.html</a></p>
</blockquote>
<p>Nö. Sondern denen hier:<br />
<a href="http://www.sgi.com/tech/stl/StrictWeakOrdering.html" rel="nofollow">http://www.sgi.com/tech/stl/StrictWeakOrdering.html</a></p>
<p>Die Elemente selbst müssen LessThanComparable sein.</p>
</blockquote>
<p>=&gt;</p>
<blockquote>
<p># The ordering relation on RandomAccessIterator's value type is a strict weak ordering, as defined in the LessThan Comparable requirements.</p>
</blockquote>
<p>nachzulesen hier:<br />
<a href="http://www.sgi.com/tech/stl/sort.html" rel="nofollow">http://www.sgi.com/tech/stl/sort.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/872097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872097</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 14 Sep 2005 14:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to stl: list of vector sortieren on Wed, 14 Sep 2005 15:05:02 GMT]]></title><description><![CDATA[<p>25.3 (Sorting and related algorihms) clause 3 schrieb:</p>
<p>... For the algorithms to work correctly, <em>Comp</em> has to induce a strict weak ordering on the values.</p>
<p>Oder hier aus der SGI Doku:<br />
template &lt;class RandomAccessIterator, class StrictWeakOrdering&gt;<br />
void sort(RandomAccessIterator first, RandomAccessIterator last,<br />
StrictWeakOrdering comp);</p>
<p>StrictWeakOrdering kann man anklicken und bringt einen direkt zu den Strict Weak Ordering Requirements.<br />
Die gehen nämlich einen Schritt weiter als die LessThanComparable Requirements und führen &quot;Transitivity of equivalence&quot; ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/872113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872113</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 14 Sep 2005 15:05:02 GMT</pubDate></item></channel></rss>