<?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]]></title><description><![CDATA[<p>Ich habe ein std::set das Objekte einer Klasse verwaltet. Der operator &lt; ist über ein Attribut der Klasse definiert. Kann ich in dem std::set jetzt nach einem Objekt suchen, ohne eine Instanz der Klasse zu erstellen? Also angenommen dieses Attribut ist ein string, und ich möchte das Objekt suchen, das diesen string als Attribut hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301533/std-set</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 22:44:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301533.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Mar 2012 13:39:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 13:39:54 GMT]]></title><description><![CDATA[<p>Ich habe ein std::set das Objekte einer Klasse verwaltet. Der operator &lt; ist über ein Attribut der Klasse definiert. Kann ich in dem std::set jetzt nach einem Objekt suchen, ohne eine Instanz der Klasse zu erstellen? Also angenommen dieses Attribut ist ein string, und ich möchte das Objekt suchen, das diesen string als Attribut hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196611</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Thu, 29 Mar 2012 13:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 13:41:10 GMT]]></title><description><![CDATA[<p>Doof, gelle? Das geht dann nur über <code>std::find_if</code> ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196613</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 29 Mar 2012 13:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 13:44:18 GMT]]></title><description><![CDATA[<p>Du iterierst über alle Elemente des sets und guckst mittels einer passenden Funktion nach, ob das Element zu deinem Kriterium passt. Da dein Kriterium ja anscheinend nicht das Ordnungskriterium des sets ist, haben die beiden überhaupt nichts miteinander zu tun. Oder man kann diese Handsuche mit dem genannten find_if abkürzen, welches genau das oben beschriebene tut. Aber jetzt weißt du wenigstens, was da passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196616</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 29 Mar 2012 13:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 13:57:46 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Da dein Kriterium ja anscheinend nicht das Ordnungskriterium des sets ist</p>
</blockquote>
<p>Doch doch, ist es. Daher ja die Frage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196629</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Thu, 29 Mar 2012 13:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:04:20 GMT]]></title><description><![CDATA[<p>unreg schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Da dein Kriterium ja anscheinend nicht das Ordnungskriterium des sets ist</p>
</blockquote>
<p>Doch doch, ist es. Daher ja die Frage.</p>
</blockquote>
<p>Ne, ist es nicht. Wenn Dein Elementtyp z.B. <code>A</code> ist und <code>u</code> und <code>v</code> Objekte vom Typ <code>A</code> , dann ist aus Sicht des sets <code>u &lt; v</code> das Ordnungsmerkmal. Es werden also Objekte vom Typ <code>A</code> in Relation gesetzt. Dass intern ein String für den <code>operator&lt;</code> benutzt wird, kann <code>std::set</code> nicht wissen. Das kann nur A-Objekte miteinander vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196634</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:04:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:06:52 GMT]]></title><description><![CDATA[<p>Soweit war ich irgendwie auch schon.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Die Frage war, ob es trotzdem eine Möglichkeit gibt die schnelle Suche des set auszunutzen, undzwar möglichst elegant mit Standardmitteln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196637</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:08:51 GMT]]></title><description><![CDATA[<p>unreg schrieb:</p>
<blockquote>
<p>Soweit war ich irgendwie auch schon.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Die Frage war, ob es trotzdem eine Möglichkeit gibt die schnelle Suche des set auszunutzen, undzwar möglichst elegant mit Standardmitteln.</p>
</blockquote>
<p>Wieso fragst Du noch mal? Das wurde schon zwei mal beantwortet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196639</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:08:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:24:45 GMT]]></title><description><![CDATA[<p>Das klingt fast so, als würdest du eine std::map wollen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196649</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:30:20 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Das klingt fast so, als würdest du eine std::map wollen...</p>
</blockquote>
<p>Das ist auch so, nur gehört der Key dem gemappten Objekt. Vielleicht könnte man eine Referenz benutzen, aber das Objekt kann ja im Speicher verschoben werden, insofern halte ich das für keine gute Idee.<br />
Mich wundert auch etwas, dass dieses Problem noch nie jemand gehabt zu haben scheint.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196653</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:32:33 GMT]]></title><description><![CDATA[<p>achso, dieser key ändert sich - dann geht eine map natürlich nicht.</p>
<p>Alle, die dieses Problem bisher gehabt haben, werden std::find_if verwendet haben (oder das Verhalten von find_if nachprogrammiert). Wieso hast du denn so ein Problem mit dieser Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196655</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:34:07 GMT]]></title><description><![CDATA[<p>Weil es den Sinn des set (die schnelle Suche) kaputt macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196656</guid><dc:creator><![CDATA[unreg]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 14:44:16 GMT]]></title><description><![CDATA[<p>Es *kann* keine schnelle Suche geben, wenn sich der entscheidende Key ändert. hast du mal geprüft, ob sich das &quot;langsame&quot; find_if überhaupt auf die Performance auswirkt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196662</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 29 Mar 2012 14:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Thu, 29 Mar 2012 15:59:42 GMT]]></title><description><![CDATA[<p>Stopf alles in einen vector. Dazu dann noch eine jeweils map Ordnung nach Kriterium A auf Vectorindizes und eine map nach Kriterium B auf Indizes. Dann kannst du flott auf Daten nach unterschiedlicher Ordnung zugreifen. Alles schön in eine Supercontainerklasse gepackt.</p>
<p>Gibt's glaube ich auch schon fertig von Boost.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196682</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 29 Mar 2012 15:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Fri, 30 Mar 2012 07:01:51 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Stopf alles in einen vector. Dazu dann noch eine jeweils map Ordnung nach Kriterium A auf Vectorindizes und eine map nach Kriterium B auf Indizes. Dann kannst du flott auf Daten nach unterschiedlicher Ordnung zugreifen. Alles schön in eine Supercontainerklasse gepackt.</p>
</blockquote>
<p>das klingt ja an sich gut, allerdings muss er dann darauf achten, die Map zu aktualisieren, wenn sich der Key eines Elementes ändert... oder habe ich da jetzt einen Denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196853</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 30 Mar 2012 07:01:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Fri, 30 Mar 2012 07:04:33 GMT]]></title><description><![CDATA[<p>Kein Denkfehler. Deswegen sprach SeppJja auch davon alles in eine Verwaltungsklasse zu stopfen. Duie übernimmt dann die Synchronisation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196858</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 30 Mar 2012 07:04:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Fri, 30 Mar 2012 07:09:52 GMT]]></title><description><![CDATA[<p>und woher weiß die Verwaltungsklasse, dass sich in irgendeinem Objekt eine Membervariable geändert hat? Dazu müsste ja entweder das Objekt ein Signal aussenden oder die Verwaltungsklasse permanent die Member abfragen - und diese Member müssten dann auch öffentlich verfügbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196859</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 30 Mar 2012 07:09:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Fri, 30 Mar 2012 07:12:42 GMT]]></title><description><![CDATA[<p>Nein, deine Membervariablen machst du natürlich private. Nur die Verwaltungsklasse selbst bekommt die Rechte da was zu ändern. Du musst halt alle nötigen Zugriffsfunktionen implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196861</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 30 Mar 2012 07:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::set on Fri, 30 Mar 2012 07:19:09 GMT]]></title><description><![CDATA[<p>Wenn es sich dabei um ein eigenes Objekt handelt, ok. Wenn man Objekte aus einer Library verwalten will, geht das schon nicht mehr. Und mir ist immer noch nicht klar, wie die Synchronisation laufen soll, wenn da Objekt keine Signale bei Änderungen des Wertes aussendet. Geht das auch anders als mit permanentem Polling? Was, wenn die Klasse nicht Thread-sicher ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196864</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 30 Mar 2012 07:19:09 GMT</pubDate></item></channel></rss>