<?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[stable_sort]]></title><description><![CDATA[<p>Hi,,</p>
<p>folgendes Programm habe ich geschrieben:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;deque&gt;
#include&lt;functional&gt;
#include&lt;string&gt;
using namespace std;

struct daten
{
	string name;
	string wohnort;
};

ostream&amp; operator&lt;&lt;(ostream&amp; os,daten&amp; d)
{
	os&lt;&lt;d.name&lt;&lt;&quot; wohnt in &quot;&lt;&lt;d.wohnort&lt;&lt;&quot;.&quot;&lt;&lt;endl;
	return os;
}

daten init()
{
	daten temp;
	static int i=0;
	i++;
	if(i==1) { temp.name=&quot;Bernd&quot;;temp.wohnort=&quot;Rostock&quot;; }
	if(i==2) { temp.name=&quot;Kai&quot;;temp.wohnort=&quot;Rostock&quot;; }
	if(i==3) { temp.name=&quot;Tanja&quot;;temp.wohnort=&quot;Magdeburg&quot;; }
	if(i==4) { temp.name=&quot;Chris&quot;;temp.wohnort=&quot;Rostock&quot;; }
	if(i==5) { temp.name=&quot;Tina&quot;;temp.wohnort=&quot;Stuttgart&quot;; }
	return(temp);
}

int main()
{
	deque&lt;daten&gt; container(5);
	deque&lt;daten&gt;::iterator iter;
	generate(container.begin(),container.end(),init);
	stable_sort(container.begin(),container.end(),greater&lt;string&gt;());                                   //funktioniert nicht^^
	for(iter=container.begin();iter!=container.end();iter++)
		cout&lt;&lt;*iter&lt;&lt;endl;
	return 0;
}
</code></pre>
<p>Ich würde gerne erst nach dem Wohnort sortieren, dann nach dem Namen. Damit die relative Reihenfolge erhalten bleibt, möchte ich den stable_sort-Algorithmus nutzen. Nur wie</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/125397/stable_sort</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 07:30:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125397.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Nov 2005 13:21:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 13:21:46 GMT]]></title><description><![CDATA[<p>Hi,,</p>
<p>folgendes Programm habe ich geschrieben:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;deque&gt;
#include&lt;functional&gt;
#include&lt;string&gt;
using namespace std;

struct daten
{
	string name;
	string wohnort;
};

ostream&amp; operator&lt;&lt;(ostream&amp; os,daten&amp; d)
{
	os&lt;&lt;d.name&lt;&lt;&quot; wohnt in &quot;&lt;&lt;d.wohnort&lt;&lt;&quot;.&quot;&lt;&lt;endl;
	return os;
}

daten init()
{
	daten temp;
	static int i=0;
	i++;
	if(i==1) { temp.name=&quot;Bernd&quot;;temp.wohnort=&quot;Rostock&quot;; }
	if(i==2) { temp.name=&quot;Kai&quot;;temp.wohnort=&quot;Rostock&quot;; }
	if(i==3) { temp.name=&quot;Tanja&quot;;temp.wohnort=&quot;Magdeburg&quot;; }
	if(i==4) { temp.name=&quot;Chris&quot;;temp.wohnort=&quot;Rostock&quot;; }
	if(i==5) { temp.name=&quot;Tina&quot;;temp.wohnort=&quot;Stuttgart&quot;; }
	return(temp);
}

int main()
{
	deque&lt;daten&gt; container(5);
	deque&lt;daten&gt;::iterator iter;
	generate(container.begin(),container.end(),init);
	stable_sort(container.begin(),container.end(),greater&lt;string&gt;());                                   //funktioniert nicht^^
	for(iter=container.begin();iter!=container.end();iter++)
		cout&lt;&lt;*iter&lt;&lt;endl;
	return 0;
}
</code></pre>
<p>Ich würde gerne erst nach dem Wohnort sortieren, dann nach dem Namen. Damit die relative Reihenfolge erhalten bleibt, möchte ich den stable_sort-Algorithmus nutzen. Nur wie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909437</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Sun, 06 Nov 2005 13:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 19:59:47 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909927</guid><dc:creator><![CDATA[Apollon]]></dc:creator><pubDate>Sun, 06 Nov 2005 19:59:47 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 20:20:14 GMT]]></title><description><![CDATA[<p>Aus Versehen doppelt gepostet,,kann gelöscht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909963</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Sun, 06 Nov 2005 20:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 20:43:02 GMT]]></title><description><![CDATA[<p>ist das was du willst ?</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;deque&gt;
#include&lt;functional&gt;
#include&lt;string&gt;
using namespace std;

struct daten{
    string name;
    string wohnort;
};

ostream&amp; operator&lt;&lt;(ostream&amp; os,daten&amp; d)
{
    os&lt;&lt;d.name&lt;&lt;&quot; wohnt in &quot;&lt;&lt;d.wohnort&lt;&lt;&quot;.&quot;;
    return os;
}

bool lower_loc( const daten &amp; d1, const daten &amp; d2 ) { return d1.wohnort &lt; d2.wohnort; }
bool lower_name( const daten &amp; d1, const daten &amp; d2 ) { return d1.name &lt; d2.name; }

daten init()
{
    daten temp;
    static int i=0;
    i++;
    if(i==1) { temp.name=&quot;Bernd&quot;;temp.wohnort=&quot;Rostock&quot;; }
    if(i==2) { temp.name=&quot;Kai&quot;;temp.wohnort=&quot;Rostock&quot;; }
    if(i==3) { temp.name=&quot;Tanja&quot;;temp.wohnort=&quot;Magdeburg&quot;; }
    if(i==4) { temp.name=&quot;Chris&quot;;temp.wohnort=&quot;Rostock&quot;; }
    if(i==5) { temp.name=&quot;Tina&quot;;temp.wohnort=&quot;Stuttgart&quot;; }
    if(i==6) { temp.name=&quot;Torsten&quot;;temp.wohnort=&quot;Magdeburg&quot;; }
    return(temp);
}

int main()
{
    deque&lt;daten&gt; container(6);
    deque&lt;daten&gt;::iterator iter;
    generate(container.begin(),container.end(),init);

    cout &lt;&lt; &quot;\nunsortiert :&quot; &lt;&lt; endl;

    for(iter=container.begin();iter!=container.end();++iter)
        cout&lt;&lt;*iter&lt;&lt;endl;
    cout &lt;&lt; endl;

    cout &lt;&lt; &quot;\nnach namen :&quot; &lt;&lt; endl;

    stable_sort(container.begin(),container.end(),lower_name );
    for(iter=container.begin();iter!=container.end();++iter)
        cout&lt;&lt;*iter&lt;&lt;endl;

    stable_sort(container.begin(),container.end(),lower_loc );

    cout &lt;&lt; &quot;\nnach wohnort :&quot; &lt;&lt; endl;

    for(iter=container.begin();iter!=container.end();++iter)
        cout&lt;&lt;*iter&lt;&lt;endl;
    cout &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/909999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/909999</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 06 Nov 2005 20:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 21:25:54 GMT]]></title><description><![CDATA[<p>Vielen Dank!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Aber wieso Präfix statt Postfix Schreibweise -&gt;++iter??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910043</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Sun, 06 Nov 2005 21:25:54 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 21:34:47 GMT]]></title><description><![CDATA[<p>AJ_Styles schrieb:</p>
<blockquote>
<p>Aber wieso Präfix statt Postfix Schreibweise -&gt;++iter??</p>
</blockquote>
<p>Bei postfix muss eine kopie erzeugt werden bei präfix nicht.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910058</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 06 Nov 2005 21:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 21:40:15 GMT]]></title><description><![CDATA[<p>Allgemein oder nur beim Gebrauch von Iteratoren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910069</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Sun, 06 Nov 2005 21:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 21:53:50 GMT]]></title><description><![CDATA[<p>immer<br />
Edit: naja bei pod's kann der compiler die kopie in einem register halten und dann ist der Laufzeit unterschied minimal aber nicht null</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910087</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 06 Nov 2005 21:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Sun, 06 Nov 2005 21:51:49 GMT]]></title><description><![CDATA[<p>OK,,danke nochmals <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/910089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910089</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Sun, 06 Nov 2005 21:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Mon, 07 Nov 2005 05:42:27 GMT]]></title><description><![CDATA[<p>ZuK schrieb:</p>
<blockquote>
<p>immer<br />
Edit: naja bei pod's kann der compiler die kopie in einem register halten und dann ist der Laufzeit unterschied minimal aber nicht null</p>
</blockquote>
<p>naja, der optimierer wirds schon richten, hoffen wir. im übrigen muss eine register kopie nicht unbedingt etwas kosten, das kann der register-allokator auch durch aliasing erreichen (kopieren müssen wir erst, wenn eines der aliase verändert werden soll, also im prinzip COW).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910208</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 07 Nov 2005 05:42:27 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Mon, 07 Nov 2005 07:54:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">stable_sort(container.begin(),container.end(),lower_name );
</code></pre>
<p>Wieso werden der Funktion lower_name keine Argumente übergeben? Sie benötigt doch 2 Argumente vom Typ const daten &amp; d1 und const daten &amp; d2 ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910252</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Mon, 07 Nov 2005 07:54:42 GMT</pubDate></item><item><title><![CDATA[Reply to stable_sort on Mon, 07 Nov 2005 08:16:39 GMT]]></title><description><![CDATA[<p>AJ_Styles schrieb:</p>
<blockquote>
<p>Wieso werden der Funktion lower_name keine Argumente übergeben? Sie benötigt doch 2 Argumente vom Typ const daten &amp; d1 und const daten &amp; d2 ??</p>
</blockquote>
<p>Weil das hier kein Aufruf von lower_name sein soll, sondern die Übergabe eines Funktionsobjekts. Das Aufrufen übernimmt stable_sort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/910270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/910270</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 07 Nov 2005 08:16:39 GMT</pubDate></item></channel></rss>