<?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::multiset find fehler]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>ich habe einen Fehler in std::multiset::find. Ich suche ein Element in einem Multiset. Dieses ist vorhanden. Jedoch wird es von find nicht gefunden. Dannach stürzt mein Programm wegen invaliden Pointer ab. Ich glaube das es am Compiler liegt. Ich benutzte den GCC für 64bit. Gibt es eine Compiler Einstellung damit es funktiont?</p>
<p>Hier ist die Ausgabe: Hinter Value steht der Wert, den der Multiset Eintrag angenommen hat. Hinter Test steht ein Boolescher Test, mit dem Element, welches Find finden soll.</p>
<blockquote>
<p>Value: -inf test: 0<br />
Value: -inf test: 0<br />
Value: -inf test: 0<br />
Value: -4.82803e+30 test: 0<br />
Value: -88.5994 test: 1 // hier wirds gefunden<br />
Value: -2.34462e-27 test: 0<br />
Value: -8.25169e+19 test: 0<br />
Value: -1.29279e+06 test: 0<br />
Value: -2.97187e-16 test: 0<br />
Value: 0 test: 0<br />
ToFind: -88.5994<br />
test: 0</p>
</blockquote>
<p>Hier ist der Quelltextausschnitt</p>
<pre><code>// Ermitteln des Horizontalen Max Filters
    for(int row=0; row&lt;img.rows; row++ ) {
        std::multiset&lt;float&gt; set;
        set.clear();
        // prefill the multiset

        for( uint col=0; col&lt;wsize; col++ ){
            set.insert(img.at&lt;float&gt;(row, col));
        }
        // left border
        for( uint col=0; col&lt;wsize+1; col++ ) {
            set.insert(img.at&lt;float&gt;(row, col+wsize));
            tmp1.at&lt;float&gt;(row, col) =*(set.rbegin());
        }
        // inside
        for( uint col=wsize+1; col&lt;img.cols-wsize; col++ ) {
// Es läuft bis zu dieser Zeile und Spalte ohne Probleme durch
            if((row==24) &amp;&amp; (col==608)){
                foreach(float v, set){
                    std::cerr &lt;&lt; &quot;Value: &quot; &lt;&lt; v &lt;&lt; &quot; test: &quot; &lt;&lt; (img.at&lt;float&gt;(row, col-wsize-1) == v) &lt;&lt; std::endl;
                }
                std::cerr &lt;&lt; &quot;ToFind: &quot; &lt;&lt; img.at&lt;float&gt;(row, col-wsize-1) &lt;&lt; std::endl;
                std::cerr &lt;&lt; &quot;test: &quot; &lt;&lt; (set.find(img.at&lt;float&gt;(row, col-wsize-1)) != set.end()) &lt;&lt; std::endl;
            }
            std::multiset&lt;float&gt;::const_iterator it(set.find(img.at&lt;float&gt;(row, col-wsize-1)));
            set.erase(it);
            set.insert(img.at&lt;float&gt;(row, col+wsize));
            tmp1.at&lt;float&gt;(row, col) =*(set.rbegin());
        }
        // right border
        for( int col=img.cols-wsize; col&lt;img.cols; col++ ) {
            set.erase(set.find(img.at&lt;float&gt;(row, col-wsize-1)));
            tmp1.at&lt;float&gt;(row, col) =*(set.rbegin());
        }
    }
</code></pre>
<p>P.S. Cleanen hat nicht funktioniert. Neustarten des Rechners auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322690/std-multiset-find-fehler</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 16:43:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322690.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Jan 2014 17:02:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::multiset find fehler on Fri, 03 Jan 2014 17:02:46 GMT]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>ich habe einen Fehler in std::multiset::find. Ich suche ein Element in einem Multiset. Dieses ist vorhanden. Jedoch wird es von find nicht gefunden. Dannach stürzt mein Programm wegen invaliden Pointer ab. Ich glaube das es am Compiler liegt. Ich benutzte den GCC für 64bit. Gibt es eine Compiler Einstellung damit es funktiont?</p>
<p>Hier ist die Ausgabe: Hinter Value steht der Wert, den der Multiset Eintrag angenommen hat. Hinter Test steht ein Boolescher Test, mit dem Element, welches Find finden soll.</p>
<blockquote>
<p>Value: -inf test: 0<br />
Value: -inf test: 0<br />
Value: -inf test: 0<br />
Value: -4.82803e+30 test: 0<br />
Value: -88.5994 test: 1 // hier wirds gefunden<br />
Value: -2.34462e-27 test: 0<br />
Value: -8.25169e+19 test: 0<br />
Value: -1.29279e+06 test: 0<br />
Value: -2.97187e-16 test: 0<br />
Value: 0 test: 0<br />
ToFind: -88.5994<br />
test: 0</p>
</blockquote>
<p>Hier ist der Quelltextausschnitt</p>
<pre><code>// Ermitteln des Horizontalen Max Filters
    for(int row=0; row&lt;img.rows; row++ ) {
        std::multiset&lt;float&gt; set;
        set.clear();
        // prefill the multiset

        for( uint col=0; col&lt;wsize; col++ ){
            set.insert(img.at&lt;float&gt;(row, col));
        }
        // left border
        for( uint col=0; col&lt;wsize+1; col++ ) {
            set.insert(img.at&lt;float&gt;(row, col+wsize));
            tmp1.at&lt;float&gt;(row, col) =*(set.rbegin());
        }
        // inside
        for( uint col=wsize+1; col&lt;img.cols-wsize; col++ ) {
// Es läuft bis zu dieser Zeile und Spalte ohne Probleme durch
            if((row==24) &amp;&amp; (col==608)){
                foreach(float v, set){
                    std::cerr &lt;&lt; &quot;Value: &quot; &lt;&lt; v &lt;&lt; &quot; test: &quot; &lt;&lt; (img.at&lt;float&gt;(row, col-wsize-1) == v) &lt;&lt; std::endl;
                }
                std::cerr &lt;&lt; &quot;ToFind: &quot; &lt;&lt; img.at&lt;float&gt;(row, col-wsize-1) &lt;&lt; std::endl;
                std::cerr &lt;&lt; &quot;test: &quot; &lt;&lt; (set.find(img.at&lt;float&gt;(row, col-wsize-1)) != set.end()) &lt;&lt; std::endl;
            }
            std::multiset&lt;float&gt;::const_iterator it(set.find(img.at&lt;float&gt;(row, col-wsize-1)));
            set.erase(it);
            set.insert(img.at&lt;float&gt;(row, col+wsize));
            tmp1.at&lt;float&gt;(row, col) =*(set.rbegin());
        }
        // right border
        for( int col=img.cols-wsize; col&lt;img.cols; col++ ) {
            set.erase(set.find(img.at&lt;float&gt;(row, col-wsize-1)));
            tmp1.at&lt;float&gt;(row, col) =*(set.rbegin());
        }
    }
</code></pre>
<p>P.S. Cleanen hat nicht funktioniert. Neustarten des Rechners auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374908</guid><dc:creator><![CDATA[Anom]]></dc:creator><pubDate>Fri, 03 Jan 2014 17:02:46 GMT</pubDate></item><item><title><![CDATA[Reply to std::multiset find fehler on Fri, 03 Jan 2014 19:21:11 GMT]]></title><description><![CDATA[<p>Floats verhalten sich komisch beim Vergleichen. NAN-Vergleiche sind immer false, selbst wenn sie mit sich selbst verglichen werden. Weiterhin hast du immer Rundungsfehler. Leute gehen so weit, dass floats niemals per == verglichen werden sollten, weil es einfach Quatsch ist. Weiterhin sollten floats keine Keys für map oder set sein. In kurz: Es ist kein multiset-Fehler, es ist ein float-Vergleich-Fehler.<br />
<a href="http://stackoverflow.com/questions/6722293/why-comparing-double-and-float-leads-to-unexpected-result" rel="nofollow">Further</a> <a href="http://stackoverflow.com/questions/3437085/check-nan-number" rel="nofollow">Reading</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374932</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Fri, 03 Jan 2014 19:21:11 GMT</pubDate></item><item><title><![CDATA[Reply to std::multiset find fehler on Fri, 03 Jan 2014 20:46:52 GMT]]></title><description><![CDATA[<p>Anom schrieb:</p>
<blockquote>
<p>Ich glaube das es am Compiler liegt.</p>
</blockquote>
<p>warum?</p>
<p>Anom schrieb:</p>
<blockquote>
<p>Hier ist der Quelltextausschnitt</p>
<pre><code>...
</code></pre>
</blockquote>
<p>Das ist kein <a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">minimales Beispiel</a>, das wir nachvollziehen könnten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374959</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 03 Jan 2014 20:46:52 GMT</pubDate></item></channel></rss>