<?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[Vector zurückgeben]]></title><description><![CDATA[<p>Wieder eine Frage. Diesmal gehts über Rückgabewerte.<br />
Ich hab nun eine Datei in eine vector/string-Variable eingelesen und möchte diese zurückgeben. Wie mach ich das am besten? Ich möchte dass dann der Wert aus dem Speicher wieder rausgenommen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238931/vector-zurückgeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 08:01:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238931.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Apr 2009 12:06:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 12:06:21 GMT]]></title><description><![CDATA[<p>Wieder eine Frage. Diesmal gehts über Rückgabewerte.<br />
Ich hab nun eine Datei in eine vector/string-Variable eingelesen und möchte diese zurückgeben. Wie mach ich das am besten? Ich möchte dass dann der Wert aus dem Speicher wieder rausgenommen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697204</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Fri, 17 Apr 2009 12:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 12:14:20 GMT]]></title><description><![CDATA[<blockquote>
<p>vector/string-Variable</p>
</blockquote>
<p>Was ist das denn ?</p>
<blockquote>
<p>Ich möchte dass dann der Wert aus dem Speicher wieder rausgenommen wird.</p>
</blockquote>
<p>Welcher Wert ?<br />
Am Besten: Code zeigen und Fragen nochmal formulieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697211</guid><dc:creator><![CDATA[MiP]]></dc:creator><pubDate>Fri, 17 Apr 2009 12:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 12:37:33 GMT]]></title><description><![CDATA[<p>Lumio schrieb:</p>
<blockquote>
<p>Wieder eine Frage. Diesmal gehts über Rückgabewerte.<br />
Ich hab nun eine Datei in eine vector/string-Variable eingelesen und möchte diese zurückgeben. Wie mach ich das am besten? Ich möchte dass dann der Wert aus dem Speicher wieder rausgenommen wird.</p>
</blockquote>
<p>Am besten call by reference und nicht per return. Also etwa so:</p>
<pre><code class="language-cpp">#include&lt;string&gt;
#include&lt;vector&gt;
#include&lt;iostream&gt;

using namespace std;

bool einlesen(string&amp; puffer) {
    puffer = &quot;hallo Puffer&quot;;
}

void einlesenInVector(vector&lt;string&gt;&amp; puffer) {
   puffer.push_back(&quot;hallo welt&quot;);
}

int main() {
    string irgendeinString;
    vector&lt;string&gt; irgendeinVector;

    einlesenInVector(irgendeinVector);

    einlesen(irgendeinString);

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1697225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697225</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Fri, 17 Apr 2009 12:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:23:59 GMT]]></title><description><![CDATA[<p>Gibt es keine Möglichkeit mit return? Andernfalls ist diese Art sicherlich besser <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="🙂"
    /> Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697346</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:29:11 GMT]]></title><description><![CDATA[<p>Lumio schrieb:</p>
<blockquote>
<p>Gibt es keine Möglichkeit mit return?</p>
</blockquote>
<p>Doch, aber willst du wirklich den riesigen Container unnötig kopieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697354</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:31:15 GMT]]></title><description><![CDATA[<p>Nein, will ich nicht, aber es gibt sicherlich andere Situationen, wo es durchaus nicht schlecht sein kann, dies zu wissen, oder? <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697359</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:31:15 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:33:16 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Lumio schrieb:</p>
<blockquote>
<p>Gibt es keine Möglichkeit mit return?</p>
</blockquote>
<p>Doch, aber willst du wirklich den riesigen Container unnötig kopieren?</p>
</blockquote>
<p>dürfte ich da nicht auf RVO hoffen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697362</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:34:58 GMT]]></title><description><![CDATA[<p>Lumio schrieb:</p>
<blockquote>
<p>Nein, will ich nicht, aber es gibt sicherlich andere Situationen, wo es durchaus nicht schlecht sein kann, dies zu wissen, oder? <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="🙂"
    /></p>
</blockquote>
<p>Ah ja, das sicher. <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>
<pre><code class="language-cpp">std::vector&lt;std::string&gt; BaueEinenSatz()
{
    std::vector&lt;std::string&gt; Vec;
    Vec.push_back(&quot;Hallo&quot;);
    Vec.push_back(&quot;wie&quot;);
    Vec.push_back(&quot;gehts?&quot;);
    return Vec;
}
</code></pre>
<p>volkard schrieb:</p>
<blockquote>
<p>dürfte ich da nicht auf RVO hoffen?</p>
</blockquote>
<p>Daran habe ich vorhin auch gedacht, aber hat RVO nicht manchmal Probleme, wenn benannte Variablen im Spiel sind? Ich würde das Risiko nicht um jeden Preis eingehen wollen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697364</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:47:38 GMT]]></title><description><![CDATA[<p>Chris++ schrieb:</p>
<blockquote>
<p>Am besten call by reference und nicht per return.</p>
</blockquote>
<p>Einen Wert als Referenz übergeben zu lassen und ihn in der Funtkion zu ändern ohne ihn zurückzugeben sollte man imho möglichst vermeiden. Solche Aufrufe sind ungewohnt, unintuitiv und deshalb schwerer lesbar, nicht so leicht verständlich und deshalb nicht so einfach wartbar. Ich würde daher eher einen Modifizierer schreiben, ähnlich den streamoperatoren:</p>
<pre><code class="language-cpp">vector&lt;string&gt;&amp; einlesenInVector(vector&lt;string&gt;&amp; puffer, string const&amp; arg) 
{ puffer.push_back(arg); return puffer; }
</code></pre>
<p>Nexus schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>dürfte ich da nicht auf RVO hoffen?</p>
</blockquote>
<p>Daran habe ich vorhin auch gedacht, aber hat RVO nicht manchmal Probleme, wenn benannte Variablen im Spiel sind?</p>
</blockquote>
<p>Im Gegenteil - nennt sich dann NRVO <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/1697377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697377</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:47:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 15:53:37 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Im Gegenteil - nennt sich dann NRVO <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>
</blockquote>
<p>Und darauf kann man sich quasi immer verlassen? Macht es also gar keinen Sinn mehr, zum Beispiel Klassenmember als Const-Referenz zurückzugeben, ausser sie sind nicht kopierbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697378</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 17 Apr 2009 15:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Fri, 17 Apr 2009 22:28:03 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Im Gegenteil - nennt sich dann NRVO <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>
</blockquote>
<p>Und darauf kann man sich quasi immer verlassen? Macht es also gar keinen Sinn mehr, zum Beispiel Klassenmember als Const-Referenz zurückzugeben, ausser sie sind nicht kopierbar?</p>
</blockquote>
<p>Wow... und das heisst?<br />
Und was ist ein Modifizierer und das oben genannte Beispiel ist für mich nicht verständlich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697580</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Fri, 17 Apr 2009 22:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Sat, 18 Apr 2009 11:13:42 GMT]]></title><description><![CDATA[<p>Optimierung von unnötigen Kopien bei Rückgabewerten:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms364057(VS.80).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms364057(VS.80).aspx</a></p>
<p>Das bedeutet soviel, dass der Compiler so schlau sein kann und gewisse Fälle, wo ein Rückgabewert (vom Code her) kopiert werden sollte, aber schlussendlich (bei gewissen Bedingungen) eben doch nicht, was dann halt eine Optimierung darstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697700</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 18 Apr 2009 11:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Mon, 20 Apr 2009 12:18:16 GMT]]></title><description><![CDATA[<p>Also wenn ich</p>
<pre><code class="language-cpp">vector&lt;string&gt; readfile (char foo[], string&amp; var)
</code></pre>
<p>habe, dann kommt folgender Fehler: error: expected constructor, destructor, or type conversion before '&lt;' token<br />
Das selbe, wenn ich std:: vor vector und string verwende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1698581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1698581</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Mon, 20 Apr 2009 12:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Mon, 20 Apr 2009 12:20:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;
</code></pre>
<p>Aber vorher hat es doch auch funktioniert? Zumindest waren die Header bereits in gepostetem Code...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1698584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1698584</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 20 Apr 2009 12:20:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Mon, 20 Apr 2009 12:39:18 GMT]]></title><description><![CDATA[<p>Ähm xD Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1698593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1698593</guid><dc:creator><![CDATA[Lumio]]></dc:creator><pubDate>Mon, 20 Apr 2009 12:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Mon, 27 Apr 2009 14:26:46 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Im Gegenteil - nennt sich dann NRVO <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>
</blockquote>
<p>Und darauf kann man sich quasi immer verlassen?</p>
</blockquote>
<p>Nein, kann man nicht. Ist schließlich nicht im Standard festgelegt.<br />
google/wikipedia können da sicher mehr sagen. Boost hat für die Frage auch ein entsprechendes Compilerflag:</p>
<pre><code class="language-cpp">#include &lt;boost/config.hpp&gt;

#ifdef BOOST_HAS_NRVO
  cout &lt;&lt; &quot;Mit NRVO :)&quot; &lt;&lt; endl;
#else 
  cout &lt;&lt; &quot;Ohne NRVO :(&quot; &lt;&lt; endl;
#endif
</code></pre>
<p>MSVC 2008 hats z.B. im Release-Modus drin, im Debug-Modus nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702031</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 27 Apr 2009 14:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Vector zurückgeben on Mon, 27 Apr 2009 14:30:50 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Erläuterung, das kam mir zuerst so rüber. Dann war mein anfänglicher Einwand also doch nicht ganz unangebracht... <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>Besonders das mit dem Boost-Flag ist interessant. Auch wenn es umständlich ist, für seinen Code jeweils zwei Versionen anzubieten. Aber so oft wird das wahrscheinlich nicht vorkommen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702037</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 27 Apr 2009 14:30:50 GMT</pubDate></item></channel></rss>