<?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[Teile einer std::list&amp;lt;&amp;gt; sortieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist es mit einer std::list&lt;&gt; möglich, nur bestimmte Teile einer dieser Liste zu sortieren?<br />
Weil die Funktion std::list&lt;&gt;::sort() nimmt ja keine Iteratoren als Argumente entgegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249437/teile-einer-std-list-lt-gt-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 13:53:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249437.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Sep 2009 17:45:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Teile einer std::list&amp;lt;&amp;gt; sortieren on Mon, 07 Sep 2009 17:45:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist es mit einer std::list&lt;&gt; möglich, nur bestimmte Teile einer dieser Liste zu sortieren?<br />
Weil die Funktion std::list&lt;&gt;::sort() nimmt ja keine Iteratoren als Argumente entgegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774027</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 07 Sep 2009 17:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to Teile einer std::list&amp;lt;&amp;gt; sortieren on Mon, 07 Sep 2009 17:59:04 GMT]]></title><description><![CDATA[<p>Dann nimm doch std::sort. Ist dann allerdings weniger effizient. Oder teil die Liste kurzfristig in Unterlisten die du danach wieder zusammenfügst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774039</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Sep 2009 17:59:04 GMT</pubDate></item><item><title><![CDATA[Reply to Teile einer std::list&amp;lt;&amp;gt; sortieren on Mon, 07 Sep 2009 18:01:08 GMT]]></title><description><![CDATA[<p>Bleiben die Iteratoren gültig, wenn std::sort() auf eine Liste angewandt wird?<br />
Ansonsten ist die zweite Methode glaube ich besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774040</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 07 Sep 2009 18:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to Teile einer std::list&amp;lt;&amp;gt; sortieren on Mon, 07 Sep 2009 20:35:21 GMT]]></title><description><![CDATA[<p>Du könntest mit splice die Liste auseinandernehmen und den zu sortierenden Teil in eine andere Liste verschieben und dort sortieren. danach einfach splice zurück. Dummerweise hat splice die unangenehme Eigenschaft, alle Iteratoren und Referenzen auf die ursprüngliche Liste ungültig zu machen, falls die zu sortierende Sequenz also nicht am Anfang oder Ende der Liste liegt, kann es umständlich sein, die Einfügestelle wiederzufinden. Abgesehen davon ist splice leider nicht in allen Implementationen mit konstanter Komplexität ausgeführt (nämlich all denen, für die size() konstante Laufzeit hat).</p>
<pre><code class="language-cpp">void sortrange(list&lt;T&gt;&amp; x, list&lt;T&gt;::iterator begin, list&lt;T&gt;::iterator end)
{
    list&lt;T&gt;::difference_type delta = difference( x.begin(), begin );
    list&lt;T&gt; tmp;
    tmp.splice( tmp.begin(), x, begin, end );
    // ALLE Iteratoren zu x sind ab hier ungültig, insbesondere begin und end
    tmp.sort();
    begin = x.begin();
    advance( begin, delta );
    x.splice( begin, tmp, tmp.begin() );
}
</code></pre>
<p>2. Iteratoren bleiben unter sort gültig (es gibt allerdings verbugte Implementationen, vc++2003 etwa vernichtet den end()-Iterator).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774042</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 07 Sep 2009 20:35:21 GMT</pubDate></item><item><title><![CDATA[Reply to Teile einer std::list&amp;lt;&amp;gt; sortieren on Mon, 07 Sep 2009 19:08:53 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">begin = x.begin();
advance( begin, delta );
</code></pre>
</blockquote>
<p>Was bewirken denn diese beiden Zeilen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774096</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 07 Sep 2009 19:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to Teile einer std::list&amp;lt;&amp;gt; sortieren on Mon, 07 Sep 2009 19:12:55 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/std/iterator/advance/" rel="nofollow">http://www.cplusplus.com/reference/std/iterator/advance/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774098</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 07 Sep 2009 19:12:55 GMT</pubDate></item></channel></rss>