<?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: Ändert sich die Baumstruktur automatisch, wenn ich einen Key verändere?]]></title><description><![CDATA[<p>Hi!</p>
<p>Angenommen ich habe ein std::set mit einem Templateparameter (Klassen-Typ), dann überlädt die Klasse den operator&lt; und der Key ist ein Klassenmember.</p>
<p>Nun wurden dem set schon einige Elemente hinzugefügt.</p>
<p>Was passiert nun, wenn ich den Key von irgendeinem Element verändere? Dann müsste sich doch automatisch die Baumstruktur anpassen. Ich kann mir das nicht so recht vorstellen, dass dann der ganze Baum neu strukturiert wird.<br />
Aber wenn das nicht passieren würde, würde der Key doch eventuell nicht mehr gefunden werden?<br />
Aber es kann doch gar nicht automatisch passieren, weil ich den Key durch eine einfache Zuweisung ändern könnte, von der das set nichts mitbekommt.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251974/std-set-ändert-sich-die-baumstruktur-automatisch-wenn-ich-einen-key-verändere</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 06:22:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251974.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Oct 2009 09:24:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::set: Ändert sich die Baumstruktur automatisch, wenn ich einen Key verändere? on Tue, 13 Oct 2009 09:24:35 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Angenommen ich habe ein std::set mit einem Templateparameter (Klassen-Typ), dann überlädt die Klasse den operator&lt; und der Key ist ein Klassenmember.</p>
<p>Nun wurden dem set schon einige Elemente hinzugefügt.</p>
<p>Was passiert nun, wenn ich den Key von irgendeinem Element verändere? Dann müsste sich doch automatisch die Baumstruktur anpassen. Ich kann mir das nicht so recht vorstellen, dass dann der ganze Baum neu strukturiert wird.<br />
Aber wenn das nicht passieren würde, würde der Key doch eventuell nicht mehr gefunden werden?<br />
Aber es kann doch gar nicht automatisch passieren, weil ich den Key durch eine einfache Zuweisung ändern könnte, von der das set nichts mitbekommt.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1791840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1791840</guid><dc:creator><![CDATA[Baum2]]></dc:creator><pubDate>Tue, 13 Oct 2009 09:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to std::set: Ändert sich die Baumstruktur automatisch, wenn ich einen Key verändere? on Tue, 13 Oct 2009 09:46:37 GMT]]></title><description><![CDATA[<p>Elemente eines Set sind konstant, so dass Du den Key nicht verändern kannst/darfst. Damit erübrigt sich die Frage <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/1791856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1791856</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 13 Oct 2009 09:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to std::set: Ändert sich die Baumstruktur automatisch, wenn ich einen Key verändere? on Tue, 13 Oct 2009 10:01:06 GMT]]></title><description><![CDATA[<p><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#103" rel="nofollow">Eine etwas längere Antwort.</a> Ganz überzeugt bin ich von der LWG-Lösung nicht; aber natürlich ist es möglich, jeden key in einem Wrapper als mutable-member zu halten und dann den Wrapper als set-element zu benutzen.</p>
<p>Kein Zweifel kann aber darin bestehen, dass die Modifikation eines keys, in einer Weise, die die Ordnung innerhalb des sets verändern würde, zu undefiniertem Verhalten führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1791861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1791861</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 13 Oct 2009 10:01:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::set: Ändert sich die Baumstruktur automatisch, wenn ich einen Key verändere? on Tue, 13 Oct 2009 18:36:47 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a><br />
Nö, ich hab doch geschrieben, dass ich ein set mit nur einem Templateparameter meine, und der ist ein Klassentyp.<br />
Und diese Klasse hat eine Variable, welche der Key ist. Und diese muss nicht konstant sein. Ich kann sie einfach über den Iterator verändern.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Ok danke, ich werde die Variable einfach const deklarieren, ich möchte den Key eh niemals ändern, war nur so ne Überlegung.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1792195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1792195</guid><dc:creator><![CDATA[Baum2]]></dc:creator><pubDate>Tue, 13 Oct 2009 18:36:47 GMT</pubDate></item></channel></rss>