<?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[Korrekte Uebergabe von const T&amp;amp; und T&amp;amp;]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wuerde gerne wissen, wie man vernuenftig und sicher Werte, die eine Funktion berechnet, in einem std::vector&lt;&gt; speichert und zurueckgibt.<br />
Folgendes Szenario:</p>
<pre><code class="language-cpp">// Diese Moeglichkeit
void foo1(const std::vector&lt;double&gt;&amp; input, std::vector&lt;double&gt;&amp; output)
{
   // interpretiere input und fuege Werte an output an
}
// versus
std::vector&lt;double&gt; foo2(const std::vector&lt;double&amp;&gt; input)
{
    std::vector&lt;double&gt; output;
    // interpretiere input und fuege Werte an output an
    return output;
}
</code></pre>
<p>Ich dachte, Version 'foo1' sei performanter als 'foo2', da keine Kopie von output angelegt werden muss.<br />
Nur: Wenn jemand nun 'foo1' mit zweimal dem gleichen Vektor aufruft</p>
<pre><code class="language-cpp">std::vector&lt;double&gt; v;
   foo1(v,v);
</code></pre>
<p>kann man ganz schnell in der Bredouille landen.</p>
<p>Was waere nun der beste Weg fuer eine 'foo' Funktion, um so etwas zu vermeiden?<br />
'foo2', und man nimmt den overhead in Kauf, oder 'foo1' mit einer Modifikation, die den Selbstaufruf vermeidet?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146929/korrekte-uebergabe-von-const-t-amp-und-t-amp</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 08:41:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146929.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 May 2006 08:00:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Korrekte Uebergabe von const T&amp;amp; und T&amp;amp; on Fri, 12 May 2006 08:01:46 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wuerde gerne wissen, wie man vernuenftig und sicher Werte, die eine Funktion berechnet, in einem std::vector&lt;&gt; speichert und zurueckgibt.<br />
Folgendes Szenario:</p>
<pre><code class="language-cpp">// Diese Moeglichkeit
void foo1(const std::vector&lt;double&gt;&amp; input, std::vector&lt;double&gt;&amp; output)
{
   // interpretiere input und fuege Werte an output an
}
// versus
std::vector&lt;double&gt; foo2(const std::vector&lt;double&amp;&gt; input)
{
    std::vector&lt;double&gt; output;
    // interpretiere input und fuege Werte an output an
    return output;
}
</code></pre>
<p>Ich dachte, Version 'foo1' sei performanter als 'foo2', da keine Kopie von output angelegt werden muss.<br />
Nur: Wenn jemand nun 'foo1' mit zweimal dem gleichen Vektor aufruft</p>
<pre><code class="language-cpp">std::vector&lt;double&gt; v;
   foo1(v,v);
</code></pre>
<p>kann man ganz schnell in der Bredouille landen.</p>
<p>Was waere nun der beste Weg fuer eine 'foo' Funktion, um so etwas zu vermeiden?<br />
'foo2', und man nimmt den overhead in Kauf, oder 'foo1' mit einer Modifikation, die den Selbstaufruf vermeidet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056151</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Fri, 12 May 2006 08:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to Korrekte Uebergabe von const T&amp;amp; und T&amp;amp; on Fri, 12 May 2006 08:15:39 GMT]]></title><description><![CDATA[<p>Du kannst ja testen.</p>
<pre><code class="language-cpp">void foo1(const std::vector&lt;double&gt;&amp; input, std::vector&lt;double&gt;&amp; output)
{
   if( &amp;input == &amp;output )
   {
// Fehlerbehandlung (Exception oder so)
   }   
// interpretiere input und fuege Werte an output an
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1056174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056174</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 12 May 2006 08:15:39 GMT</pubDate></item></channel></rss>