<?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 +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler]]></title><description><![CDATA[<p>Hi,<br />
Ich habe in einer Klasse die<br />
std::set my_set verwendet. Ich übergebe ein Funktionsobjekt, welches<br />
den Kontainer ordnet beim einfügen.<br />
Wenn ich nun mit my_set.find( ...) einen Eintrag suche,<br />
bekomme ich einen Speicherzugriffsfeher, welchen ich mir nicht erklären kann.<br />
Der typ der liste ist ein pointer wenn das ev. wichtig ist.<br />
Also den iterator, welcher find() zurückgeben sollte wird nicht verwendet.<br />
Ich rufe nur die Funktion find auf.<br />
Kann es sein, dass find nur auf bestimmt geordneten in diesem Fall Sets funktioniert ?? Also ist Meine Ordnung ev. nicht find kompatiebel ??<br />
Oder muß ich den Fehler irgendwo anderst suchen.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250054/std-set-find-eigenes-funktionsobjekt-speicherzugriffsfehler</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 01:31:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250054.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Sep 2009 20:03:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:03:40 GMT]]></title><description><![CDATA[<p>Hi,<br />
Ich habe in einer Klasse die<br />
std::set my_set verwendet. Ich übergebe ein Funktionsobjekt, welches<br />
den Kontainer ordnet beim einfügen.<br />
Wenn ich nun mit my_set.find( ...) einen Eintrag suche,<br />
bekomme ich einen Speicherzugriffsfeher, welchen ich mir nicht erklären kann.<br />
Der typ der liste ist ein pointer wenn das ev. wichtig ist.<br />
Also den iterator, welcher find() zurückgeben sollte wird nicht verwendet.<br />
Ich rufe nur die Funktion find auf.<br />
Kann es sein, dass find nur auf bestimmt geordneten in diesem Fall Sets funktioniert ?? Also ist Meine Ordnung ev. nicht find kompatiebel ??<br />
Oder muß ich den Fehler irgendwo anderst suchen.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779037</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:09:30 GMT]]></title><description><![CDATA[<p>Es wäre praktisch, wenn du ein reales Beispiel posten könntest, wo das passiert. Reduzier dein Programm mal soweit, dass du es (ansonsten lauffähig) hier posten kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779044</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:20:45 GMT]]></title><description><![CDATA[<p>Hi drakon,<br />
Habe gerade getestet, ob es ohne das Funktionsobjekt geht.<br />
Und tatsächlich funktioniert es. Die Funktion find ist abhängig von der ordnung der Elemente in set. Ich glaub ich kotz. Ich kann mir ja vorstellen, dass<br />
die Implementierung von set dadurch sehr effizient ist, aber<br />
dann sollte man standardmäßig dazuschreiben (bei der doku) wie find sucht.</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class WE_Algo : public WingedEdge&lt;T&gt;
{.
.
.
.
.
//Nicht wundern dass cih nicht einen queue voon std nehme, der geht hier nicht
std::set&lt; VList&lt;T&gt; *,EventLineOrder&lt;VList&lt;T&gt; * &gt; &gt;    event_queue;
.
.
//wird hier in eine rfunktion aufgerufen, ist aber member dieser klasse.
//Deswegen stehts hier
event_queue.find(item);
.};

//das Funktionsobjekt zum ordnen

template &lt;typename T&gt;
class EventLineOrder : private std::binary_function&lt;T,T,bool&gt;
{
.
.
inline bool operator () (const T &amp;LeftValue, const T &amp;RightValue)
        {
            for(unsigned int x=Dimension-1;x&gt;=0;x--)
                if(LeftValue-&gt;V[x] &lt; RightValue-&gt;V[x])
                    return false^!(x%2);
                else if(LeftValue-&gt;V[x] &gt; RightValue-&gt;V[x])
                    return true^!(x%2);

            //If the Points are the same,
            return true;
        }
.
}

int main(void)
{
.
.
WE_Algo&lt;long double&gt; a;
</code></pre>
<p>Also aus main raus wird eine funktion von WE_Algo aufgerufen, welche wiederum find aufruft.<br />
Mit dem Funktionsobjekt, werden die Daten richtig geordnet, find steigt aber aus,<br />
Ohne sind die daten falsch, find funktioniert aber.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779052</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:36:40 GMT]]></title><description><![CDATA[<p>Ein Punkt ist, dass ein unsigned int per Definition &gt;= 0 ist. Dann, ändert sich die Reihenfolge der Elemente zur Laufzeit? Objekte eines Set müssen konstant sein, zumindest die Teile, die als Schlüssel verwendet werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779060</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:44:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(unsigned int x=Dimension-1;x&gt;=0;x--)
</code></pre>
<p>kann nicht aufgrund der Schleifenbedingung terminieren, und sobald der Überlauf da ist (das passiert genau dann, wenn zwei Elemente äquivalent sind...), dürfte ein Zugriffsfehler folgen. Eine so dekrementierende Schleife muss das Dekrementieren an den Anfang stellen:</p>
<pre><code class="language-cpp">for(unsigned int x=Dimension;x-- &gt;0;)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1779066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779066</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:50:50 GMT]]></title><description><![CDATA[<p><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="🙂"
    /><br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a> &amp;&amp; Camper<br />
Danke für den Hinweis. Ich habs und habs nicht gefunden=(<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779085</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 20:58:51 GMT]]></title><description><![CDATA[<p>Diesen Fehler hättest du sehr gut alleine finden können.</p>
<p>1. Du hättest den Debugger benutzen können, dann hättest du gemerkt, dass du einfach nicht aus der Schleife kommst.</p>
<p>2. Du hättest wirklich mal ein Minimalbeispiel von deiner Situation machen können, welches natürlich (aufgrund der vereinfachten Vergleichsfunktion) geklappt hätte. Somit hättest du dann schon gewusst, dass es prinzipiell funktioniert. Und dann wäre es nicht mehr lange genangen, dass du bei der Implementierung der Vergleichsfunktion misstrauisch geworden wärst und da nochmal nachgehackt hättest, weil sonst ja nichts grossartig anderst ist..</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a>:<br />
Ehrlich gesagt verstehe ich deinen Gedankengang nicht ganz.</p>
<blockquote>
<p>Ein Punkt ist, dass ein unsigned int per Definition &gt;= 0 ist. Dann, ändert sich die Reihenfolge der Elemente zur Laufzeit? Objekte eines Set müssen konstant sein, zumindest die Teile, die als Schlüssel verwendet werden.</p>
</blockquote>
<p>Was hat hier unsigned int mit der Reihenfolge zu tun? Und geändert wird die Reihenfolge ja &quot;ständig&quot;, respektive wenn es nötig ist wenn ein neuer Eintrag gemacht wird. Und in wie fern muss ein set konstant sein? - Und speziell, wie kann lediglich ein Teil davon konstant sein? Und als Schlüssel und gleichzeitig Value werden ja alle Einträge behandelt..</p>
<p>Verstehe ich dich einfach falsch, oder hast du da eine andere Datenstruktur im Kopf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779095</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 15 Sep 2009 20:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:04:44 GMT]]></title><description><![CDATA[<p>@ Drakon<br />
Mein debugger ist heut eigenwillig. Er will heut nicht. ich weiß auch nicht wiso.<br />
Ich habe lange gesucht bevor ich gepostet habe. Solch fehler finde ich normal.<br />
Aber dieses mal nicht.<br />
War scheiße, merke ich selbst ne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779106</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:04:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:09:07 GMT]]></title><description><![CDATA[<p>War ja nicht so direkt, als Vorwurf gedacht, sondern nur um zu zeigen, was halt wirklich oft hilft. Oft wissen die Leute gar nicht, was ein Debugger ist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779111</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:10:17 GMT]]></title><description><![CDATA[<p>LordJaxom hat ein Fragezeichen hinten an den Satz gehängt <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="🙂"
    /><br />
Ich habe geschrieben , dass ich der Auffassung bin, dass find von<br />
der Ordnung der Elemente abhängt. Er war so freundlich das auf zu nehmen, und sich gedanken darüber zu machen. Er hat mir erklärt, dass<br />
die Elemente nicht verändert werden dürfen, da sonst find aussteigen könnte.<br />
Es wäre ja möglich, dass außer der schleife noch ein weiterer fehler wäre.<br />
So habe ich das zumindest verstanden.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779114</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:12:11 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@Drakon</a><br />
<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="🙂"
    /> Ich benutze meinen debugger zwar, aber so wirklich gut kennen tue ich ihn tatsächlich nicht.<br />
Er zickt öfter.<br />
Darf ich fragen mit was du entwickelst ==<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779116</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:17:37 GMT]]></title><description><![CDATA[<p>Ich benutze Visual Studio 2008. (die Express Versionen sind auch zu empfehlen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779125</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:17:37 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:20:32 GMT]]></title><description><![CDATA[<p>Die Express-Version von MSVC++ kannst du gratis herunterladen. Der Debugger ist wirklich sehr gut, den kann ich ebenfalls empfehlen (sowie die gesamte IDE). Vorausgesetzt, du arbeitest unter Windows.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779127</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:20:32 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:26:17 GMT]]></title><description><![CDATA[<p><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="🙂"
    /> Plattform Werbung.<br />
Ich glaub ihr bezieht schmiergelder *ggg*<br />
Im Ernst. Habe mit Visual Studio .NET auch schon programmiert,<br />
und finde die Entwicklungsumgebung richtig gut.<br />
Aber ich Entwickle unter Linux. Als IDE habe ich mir CODE::BLOCKS<br />
kompiliert. Der debugger nervt.<br />
Ist hier eher Windows oder linux Fraktion ??</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779133</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 21:40:10 GMT]]></title><description><![CDATA[<p>VS ist imo unter Windows das beste, was man machen kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ich kenne jetzt keine genauen Zahlen, aber ich denke, dass hier eher VS vorherrscht..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779153</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 15 Sep 2009 21:40:10 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Tue, 15 Sep 2009 22:01:31 GMT]]></title><description><![CDATA[<p>Seufz..... Alle Macht dem Pinguin *lach*<br />
Na ja bin kein Fanatiker.</p>
<p>//---------------------------------------------------------------------</p>
<p>Was ich noch zum Thema schreiben wollte ist, dass Find nur funktioniert, wenn<br />
die Ordnungsfunktion bei Gleichheit False zurück gibt.<br />
Ansonsten findet finde nie ein Objekt.<br />
Also das letzte false ist noch ausschlaggebend.<br />
(Nicht dass ein anonymer Leser das verfolgt, und dann entteuscht ist dass es nicht funktioniert wie behauptet).</p>
<pre><code class="language-cpp">inline bool operator () (const T &amp;LeftValue, const T &amp;RightValue)
        {
            for(unsigned int x=Dimension;x-- &gt;0;)
            {
                if(LeftValue-&gt;V[x] &lt; RightValue-&gt;V[x])
                    return false^!(x%2);
                else if(LeftValue-&gt;V[x] &gt; RightValue-&gt;V[x])
                    return true^!(x%2);
            }
            //If the Points are the same,
            return false;
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1779171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779171</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Tue, 15 Sep 2009 22:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Wed, 16 Sep 2009 06:06:34 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:<br />
&quot;Ein Punkt&quot; und &quot;Dann&quot; sollten andeuten, dass die Anmerkung zu unsigned und die zur Reihenfolge zwei <strong>un</strong>abhängige Punkte darstellen. Weiterhin (besser als &quot;dann&quot;? :p) müssen die Schlüssel von Maps und Sets konstant sein, sprich die relative Reihenfolge der Elemente darf sich nicht ändern. Beim Set ist das Element selbst der Schlüssel.</p>
<p>Das weisst Du sicher, aber ich scheine mich gestern etwas undeutlich ausgedrückt zu haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779521</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 16 Sep 2009 06:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Wed, 16 Sep 2009 06:40:04 GMT]]></title><description><![CDATA[<p>Du meinst:</p>
<pre><code class="language-cpp">inline bool operator () (const T &amp;LeftValue, const T &amp;RightValue) const 
        {
            for(unsigned int x=Dimension;x-- &gt;0;)
            {
                if(LeftValue-&gt;V[x] &lt; RightValue-&gt;V[x])
                    return !(x%2);
                else if(LeftValue-&gt;V[x] &gt; RightValue-&gt;V[x])
                    return (x%2);
            }
            //If the Points are the same,
            return false;
        }
</code></pre>
<p>???</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779552</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Wed, 16 Sep 2009 06:40:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Wed, 16 Sep 2009 17:36:49 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:<br />
&quot;Ein Punkt&quot; und &quot;Dann&quot; sollten andeuten, dass die Anmerkung zu unsigned und die zur Reihenfolge zwei <strong>un</strong>abhängige Punkte darstellen. Weiterhin (besser als &quot;dann&quot;? :p) müssen die Schlüssel von Maps und Sets konstant sein, sprich die relative Reihenfolge der Elemente darf sich nicht ändern. Beim Set ist das Element selbst der Schlüssel.</p>
</blockquote>
<p>OK. Das mit dem unsigned weiss ich jetzt, was du gemeint hast. Allerdings weiss ich immer noch nicht, was du meinst mit dem, dass die Keys konstant sein müssen.. Man kann da einfügen/löschen, wie man lustig ist. Von Konstanz imo keine Spur..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1779997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1779997</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 16 Sep 2009 17:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Fri, 18 Sep 2009 05:42:55 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>OK. Das mit dem unsigned weiss ich jetzt, was du gemeint hast. Allerdings weiss ich immer noch nicht, was du meinst mit dem, dass die Keys konstant sein müssen.. Man kann da einfügen/löschen, wie man lustig ist. Von Konstanz imo keine Spur..</p>
</blockquote>
<p>*seufz*</p>
<p>Kannst Du den Key eines Elements <strong>in der Map</strong> ändern? Nein, Du musst es, wie Du sagst, löschen und neu einfügen. Ergo sind die Keys konstant. Da in einem Set das Element der Key ist, ist das Element konstant.</p>
<p>Das wollte ich an dieser Stelle erwähnt haben, da in einem Set von Zeigern ja de Zeiger konstant ist, nicht aber das Bezeigte. Wenn man aber das Bezeigte als Sortierkriterium nutzt, kommt man schnell in Teufels Küche, weil der Compiler nicht warnt, wenn man das Bezeigte ändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780782</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 18 Sep 2009 05:42:55 GMT</pubDate></item><item><title><![CDATA[Reply to std::set +find +Eigenes Funktionsobjekt +Speicherzugriffsfehler on Fri, 18 Sep 2009 08:05:46 GMT]]></title><description><![CDATA[<p>Man kann aber das ordnungskriterium Während dem ordnen Ändern, in dem man den Functor mit</p>
<pre><code class="language-cpp">typename std::multiset&lt; EList&lt;T&gt; *,StatusOrder&lt;EList&lt;T&gt; *,T &gt; &gt;::key_compare        Compare_Functor;
Compare_Functor=status_tree.key_comp();
Compare_Functor.setOrder(false);
</code></pre>
<p>sofern man im Functor die Funktion setOrder definiert hat:</p>
<pre><code class="language-cpp">template &lt;typename T,typename T2&gt;
class StatusOrder : private std::binary_function&lt;T,T,bool&gt;
{
    private:
        bool OrderUp;
    public:
        explicit StatusOrder(bool OrderUpper=true){OrderUp=OrderUpper;};
        void setOrder(bool OrderUpper=true){OrderUp=OrderUpper;};
</code></pre>
<p>Das kann die Laufzeit beim suchen verbessern.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780834</guid><dc:creator><![CDATA[AlexXXx]]></dc:creator><pubDate>Fri, 18 Sep 2009 08:05:46 GMT</pubDate></item></channel></rss>