<?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::min, wieso mit negation?]]></title><description><![CDATA[<p>Heho, gerade mal die standard minimumfunktion angeschaut und stutze ein wenig:</p>
<pre><code class="language-cpp">template &lt;class T&gt; const T&amp; min ( const T&amp; a, const T&amp; b ) {
  return !(b&lt;a)?a:b;     // or: return !comp(b,a)?a:b; for the comp version
}
</code></pre>
<p>wieso die Negation? ist das nicht langsamer als ohne mit umgedrehten größer/kleiner zeichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308568/std-min-wieso-mit-negation</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 18:05:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308568.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Sep 2012 23:54:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::min, wieso mit negation? on Fri, 28 Sep 2012 23:54:52 GMT]]></title><description><![CDATA[<p>Heho, gerade mal die standard minimumfunktion angeschaut und stutze ein wenig:</p>
<pre><code class="language-cpp">template &lt;class T&gt; const T&amp; min ( const T&amp; a, const T&amp; b ) {
  return !(b&lt;a)?a:b;     // or: return !comp(b,a)?a:b; for the comp version
}
</code></pre>
<p>wieso die Negation? ist das nicht langsamer als ohne mit umgedrehten größer/kleiner zeichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255431</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Fri, 28 Sep 2012 23:54:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 00:03:47 GMT]]></title><description><![CDATA[<p>ich denke das ist dafür da, das man bloß operator&lt; für eigene Typen braucht, egal ob min oder max.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255432</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Sat, 29 Sep 2012 00:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 00:15:06 GMT]]></title><description><![CDATA[<p>Das kannste doch auch durch vertauschen a und b im teil nach dem Fragezeichen erreichen(bei Entfernung des Ausrufezeichens)?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255435</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Sat, 29 Sep 2012 00:15:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 00:18:59 GMT]]></title><description><![CDATA[<p>Namenloser324 schrieb:</p>
<blockquote>
<p>Das kannste doch auch durch vertauschen a und b im teil nach dem Fragezeichen erreichen(bei Entfernung des Ausrufezeichens)?!</p>
</blockquote>
<p>!(b&lt;a) != a&lt;b</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255437</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 29 Sep 2012 00:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 00:38:16 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Namenloser324 schrieb:</p>
<blockquote>
<p>Das kannste doch auch durch vertauschen a und b im teil nach dem Fragezeichen erreichen(bei Entfernung des Ausrufezeichens)?!</p>
</blockquote>
<p>!(b&lt;a) != a&lt;b</p>
</blockquote>
<p>meinte auch</p>
<pre><code class="language-cpp">(b&lt;a)?b:a;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2255439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255439</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Sat, 29 Sep 2012 00:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 07:08:54 GMT]]></title><description><![CDATA[<p>Namenloser324 schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Namenloser324 schrieb:</p>
<blockquote>
<p>Das kannste doch auch durch vertauschen a und b im teil nach dem Fragezeichen erreichen(bei Entfernung des Ausrufezeichens)?!</p>
</blockquote>
<p>!(b&lt;a) != a&lt;b</p>
</blockquote>
<p>meinte auch</p>
<pre><code class="language-cpp">(b&lt;a)?b:a;
</code></pre>
</blockquote>
<p>Das liefert im Gleichheitsfall ein anderes Ergebnis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255463</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 29 Sep 2012 07:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 07:43:21 GMT]]></title><description><![CDATA[<p>Und vielleicht damit es noch klarer wird:<br />
Es geht darum, dass sich <code>std::min</code> zu <code>std::max</code> genau gedreht verhält. Wenn bei <code>std::min(x, y)</code> das Resultat <code>x</code> ist, dann soll in jedem Fall bei <code>std::max(x, y)</code> das Resultat <code>y</code> sein, egal welche Werte <code>x</code> und <code>y</code> haben.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255468</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 29 Sep 2012 07:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 08:05:33 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Und vielleicht damit es noch klarer wird:<br />
Es geht darum, dass sich <code>std::min</code> zu <code>std::max</code> genau gedreht verhält. Wenn bei <code>std::min(x, y)</code> das Resultat <code>x</code> ist, dann soll in jedem Fall bei <code>std::max(x, y)</code> das Resultat <code>y</code> sein, egal welche Werte <code>x</code> und <code>y</code> haben.</p>
<p>Grüssli</p>
</blockquote>
<p>Das ist nicht, was der Standard vorschreibt.</p>
<p>Bei Äquivalenz soll das erste Argument weitergereicht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255471</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 29 Sep 2012 08:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 08:35:03 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Das ist nicht, was der Standard vorschreibt.</p>
</blockquote>
<p>Erstaunt mich etwas, aber ist tatsächlich so. Kapitel 25.4.7 Minimum and maximum, falls es jemand nachprüfen möchte.</p>
<p>camper schrieb:</p>
<blockquote>
<p>Namenloser324 schrieb:</p>
<blockquote>
<p>meinte auch</p>
<pre><code class="language-cpp">(b&lt;a)?b:a;
</code></pre>
</blockquote>
<p>Das liefert im Gleichheitsfall ein anderes Ergebnis.</p>
</blockquote>
<pre><code class="language-cpp">(b &lt; a) ? b : a; // (1)
!(b &lt; a) ? a : b; // (2)
</code></pre>
<p>Welche Argumentation bringst du hier, dass dies nicht das gleiche Ergebnis ist? Wenn <code>b == a</code> , dann ist die Bedingung bei (1) <code>false</code> , es kommt <code>a</code> raus. Bei (2) ist die Bedingung <code>true</code> und es kommt <code>a</code> raus.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255477</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 29 Sep 2012 08:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to std::min, wieso mit negation? on Sat, 29 Sep 2012 08:52:58 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>]</p>
<p>Namenloser324 schrieb:</p>
<blockquote>
<p>meinte auch</p>
<pre><code class="language-cpp">(b&lt;a)?b:a;
</code></pre>
</blockquote>
<p>Das liefert im Gleichheitsfall ein anderes Ergebnis.</p>
</blockquote>
<pre><code class="language-cpp">(b &lt; a) ? b : a; // (1)
!(b &lt; a) ? a : b; // (2)
</code></pre>
<p>Welche Argumentation bringst du hier, dass dies nicht das gleiche Ergebnis ist? Wenn <code>b == a</code> , dann ist die Bedingung bei (1) <code>false</code> , es kommt <code>a</code> raus. Bei (2) ist die Bedingung <code>true</code> und es kommt <code>a</code> raus.</p>
<p>Grüssli</p>
</blockquote>
<p>Da habe ich nicht genau genug hingeschaut.<br />
Die Variante mit ! ist ggf. besser lesbar bzw. genügt gewissen Ästhetikansprüchen.<br />
So wird der bevorzugte Rückgabewert zuerst genannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255480</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 29 Sep 2012 08:52:58 GMT</pubDate></item></channel></rss>