<?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[std::set&amp;lt;&amp;gt; - nicht immer sortiert?]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>folgendes Szenario:</p>
<pre><code class="language-cpp">print(const std::set&lt;int&gt;&amp; data) { /* gibt den Inhalt von data aus */ }

int main() {
    std::set&lt;int&gt; s;
    s.insert(2);
    s.insert(3);
    s.insert(4);
    print(s);    // Ausgabe: 2 3 4 - OK soweit

    *s.find(3) = 1; // Sorry für die fehlende Fehlerprüfung - würde nur ablenken
    print(s);    // Ausgabe: 2 1 4 - NICHT sortiert???
}
</code></pre>
<p>Wie kann man Werte in einem set ändern, und veranlassen, dass sich der Container wieder selbst sortiert?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261521/std-set-lt-gt-nicht-immer-sortiert</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 08:24:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261521.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Feb 2010 15:52:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::set&amp;lt;&amp;gt; - nicht immer sortiert? on Fri, 19 Feb 2010 15:52:41 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>folgendes Szenario:</p>
<pre><code class="language-cpp">print(const std::set&lt;int&gt;&amp; data) { /* gibt den Inhalt von data aus */ }

int main() {
    std::set&lt;int&gt; s;
    s.insert(2);
    s.insert(3);
    s.insert(4);
    print(s);    // Ausgabe: 2 3 4 - OK soweit

    *s.find(3) = 1; // Sorry für die fehlende Fehlerprüfung - würde nur ablenken
    print(s);    // Ausgabe: 2 1 4 - NICHT sortiert???
}
</code></pre>
<p>Wie kann man Werte in einem set ändern, und veranlassen, dass sich der Container wieder selbst sortiert?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858263</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 19 Feb 2010 15:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to std::set&amp;lt;&amp;gt; - nicht immer sortiert? on Fri, 19 Feb 2010 16:02:44 GMT]]></title><description><![CDATA[<p>erase()/insert()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858269</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 19 Feb 2010 16:02:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::set&amp;lt;&amp;gt; - nicht immer sortiert? on Fri, 19 Feb 2010 17:14:23 GMT]]></title><description><![CDATA[<p>@daersc:<br />
Dass set&lt;&gt;::find einen non-const Iterator zurückgibt, ist IMO etwas unvorteilhaft.<br />
Der Grund ist vermutlich, dass man ermöglichen wollte, Teile eines Keys &quot;in place&quot; zu ändern, die für die Sortierung nicht relevant sind.</p>
<p>Sobald man aber etwas verändert, was für die Sortierung relevant ist, bricht man den Kontrakt mit std::set. D.h. man &quot;darf&quot; es nicht machen.</p>
<p>Wenn du willst dass die Sortierung erhalten bleibt, musst du wie DocShoe schon geschrieben hat das Element aus dem Set entfernen und dann neu hinzufügen.</p>
<p>BTW: In der Boost gibt es eine nette Library namens MultiIndex. Diese hat eine Funktion zum &quot;in-place&quot; Modifizieren von Keys, also ohne dass man dazu das Element entfernen + neu hinzufügen müsste.<br />
Wobei das keine Empfehlung sein soll, die MultiIndex Library ist für deine Anwendung vermutlich Overkill.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858312</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 19 Feb 2010 17:14:23 GMT</pubDate></item></channel></rss>