<?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[Grosses Objekt zurueckgeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse Foo, bei der das Kopieren recht komplex ist, sprich Copy Ctor = langsam.</p>
<p>Ich muss in einer Methode einen Vektor von Foo zurueckgeben:</p>
<pre><code class="language-cpp">class Bar {
public:
   vector&lt;Foo&gt; computeStuff();

};
</code></pre>
<p>Meine Frage ist nun: Wie mach ich das am effizientesten. Vom Design her waere das am schoensten:</p>
<ol>
<li>Rueckgabe per lokaler Variable und Kopie:</li>
</ol>
<pre><code class="language-cpp">vector&lt;Foo&gt; Bar::computeStuff() {
  vector&lt;Foo&gt; ret;
  .. ret fuellen
  return ret;
}
</code></pre>
<p>Oder ware es vielleicht das effizienter:<br />
2) Eine Membervariable anlegen und dann eine konstante Referenz darauf liefern:</p>
<pre><code class="language-cpp">class Bar {
vector&lt;Foo&gt; m_Foos;

const vector&lt;Foo&gt;&amp; Bar::computeStuff() {
  m_Foos.clear();
  .. m_Foos fuellen
  return m_Foos;
}

};
</code></pre>
<p>Was denkt ihr ist effizienter/besser? (PS: Ich benutze Linux und g++)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288719/grosses-objekt-zurueckgeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 19:41:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288719.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Jun 2011 15:47:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Grosses Objekt zurueckgeben on Tue, 21 Jun 2011 15:47:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse Foo, bei der das Kopieren recht komplex ist, sprich Copy Ctor = langsam.</p>
<p>Ich muss in einer Methode einen Vektor von Foo zurueckgeben:</p>
<pre><code class="language-cpp">class Bar {
public:
   vector&lt;Foo&gt; computeStuff();

};
</code></pre>
<p>Meine Frage ist nun: Wie mach ich das am effizientesten. Vom Design her waere das am schoensten:</p>
<ol>
<li>Rueckgabe per lokaler Variable und Kopie:</li>
</ol>
<pre><code class="language-cpp">vector&lt;Foo&gt; Bar::computeStuff() {
  vector&lt;Foo&gt; ret;
  .. ret fuellen
  return ret;
}
</code></pre>
<p>Oder ware es vielleicht das effizienter:<br />
2) Eine Membervariable anlegen und dann eine konstante Referenz darauf liefern:</p>
<pre><code class="language-cpp">class Bar {
vector&lt;Foo&gt; m_Foos;

const vector&lt;Foo&gt;&amp; Bar::computeStuff() {
  m_Foos.clear();
  .. m_Foos fuellen
  return m_Foos;
}

};
</code></pre>
<p>Was denkt ihr ist effizienter/besser? (PS: Ich benutze Linux und g++)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081749</guid><dc:creator><![CDATA[BigOh]]></dc:creator><pubDate>Tue, 21 Jun 2011 15:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to Grosses Objekt zurueckgeben on Tue, 21 Jun 2011 15:55:42 GMT]]></title><description><![CDATA[<ol>
<li></li>
</ol>
<p>Kopie wird wegoptimiert.</p>
<p><a href="http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/" rel="nofollow">http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081753</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 21 Jun 2011 15:55:42 GMT</pubDate></item></channel></rss>