<?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 als Rückgabewert]]></title><description><![CDATA[<p>hi,</p>
<p>ich will einen vector in dem ich strings speichere, der vector wird über eine funktion gefüllt und über eine andere wieder ausgelesen, beim auslesen wird aber immer die erste stelle im vector falsch angezeigt -&gt;&quot;(null)&quot;, der rest ist richtig.</p>
<p>folgender code:<br />
main.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &quot;klasse.h&quot;

int main()
{
    Concert *con = new Concert();
    con-&gt;addSupportBand(&quot;Velvet Underground&quot;);
    con-&gt;addSupportBand(&quot;Black Angels&quot;);
    con-&gt;addSupportBand(&quot;The Duke Spirit&quot;);

    for (std::vector&lt;std::string&gt;::iterator itt = con-&gt;getSupportBands().begin(); itt != con-&gt;getSupportBands().end(); ++itt) {
        printf(&quot;Support: %s\n&quot;, itt-&gt;c_str());
    }

    return 0;
}
</code></pre>
<p>klasse.h</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;

class Concert {
    public:
        std::vector&lt;std::string&gt; getSupportBands() const { return supportBands; }
        void addSupportBand(std::string name) { supportBands.push_back(name); }

    private:
        std::vector&lt;std::string&gt; supportBands;
};
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>Support: (null)<br />
Support: Black Angels<br />
Support: The Duke Spirit</p>
</blockquote>
<p>also wieso stimmt hier die erste Stelle nicht?<br />
wenn ich allerdings den vector &quot;supportBands&quot; public mach und ich dann bei der Ausgabe direkt (ohne getsupportbands) darauf zugreife funktionierts. wieso geht das nicht mit der get-funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224556/vector-als-rückgabewert</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 08:47:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224556.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Oct 2008 13:41:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 13:41:49 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich will einen vector in dem ich strings speichere, der vector wird über eine funktion gefüllt und über eine andere wieder ausgelesen, beim auslesen wird aber immer die erste stelle im vector falsch angezeigt -&gt;&quot;(null)&quot;, der rest ist richtig.</p>
<p>folgender code:<br />
main.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &quot;klasse.h&quot;

int main()
{
    Concert *con = new Concert();
    con-&gt;addSupportBand(&quot;Velvet Underground&quot;);
    con-&gt;addSupportBand(&quot;Black Angels&quot;);
    con-&gt;addSupportBand(&quot;The Duke Spirit&quot;);

    for (std::vector&lt;std::string&gt;::iterator itt = con-&gt;getSupportBands().begin(); itt != con-&gt;getSupportBands().end(); ++itt) {
        printf(&quot;Support: %s\n&quot;, itt-&gt;c_str());
    }

    return 0;
}
</code></pre>
<p>klasse.h</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;

class Concert {
    public:
        std::vector&lt;std::string&gt; getSupportBands() const { return supportBands; }
        void addSupportBand(std::string name) { supportBands.push_back(name); }

    private:
        std::vector&lt;std::string&gt; supportBands;
};
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>Support: (null)<br />
Support: Black Angels<br />
Support: The Duke Spirit</p>
</blockquote>
<p>also wieso stimmt hier die erste Stelle nicht?<br />
wenn ich allerdings den vector &quot;supportBands&quot; public mach und ich dann bei der Ausgabe direkt (ohne getsupportbands) darauf zugreife funktionierts. wieso geht das nicht mit der get-funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597398</guid><dc:creator><![CDATA[edwood]]></dc:creator><pubDate>Sat, 11 Oct 2008 13:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 13:46:00 GMT]]></title><description><![CDATA[<p>Das löst zwar nicht die Frage aner jedesmal den Vektor zu kopieren, ist insbesondere bei größeren Datenmengen unsinnig! Übergib doch lieber eine referenz oder mache eine getter Funktion die den Vektor wrappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597399</guid><dc:creator><![CDATA[schlecht!]]></dc:creator><pubDate>Sat, 11 Oct 2008 13:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 13:49:55 GMT]]></title><description><![CDATA[<p>Das ist ne üble C/C++ mischung! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597401</guid><dc:creator><![CDATA[deejay]]></dc:creator><pubDate>Sat, 11 Oct 2008 13:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 14:07:13 GMT]]></title><description><![CDATA[<p>@deejay: danke! genau das war es! mein printf hat natürlich die ganze ausgabe zerstört, vielen dank für deine hilfe....</p>
<p>so, zurück zum Thema:<br />
ich gebe jetzt wie vorgeschlagen beim getSupportBands den Vektor als Referenz zurück, die Ausgabe ist jetzt auch richtig, danke. Nur damit ich das auch verstehe, wenn ich den vektor in getSupportBand als Wert zurück liefere wird dieser kopiert, müsste es dann nicht trotzdem funktionieren? oder warum ist dann nur das erste Element falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597416</guid><dc:creator><![CDATA[edwood]]></dc:creator><pubDate>Sat, 11 Oct 2008 14:07:13 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 14:18:14 GMT]]></title><description><![CDATA[<p>btw:<br />
Das du hier std::vector ad absurdum führst ist dir schon klar, oder?<br />
Und immer schön wieder Speicher freigeben am Ende..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597419</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 11 Oct 2008 14:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 14:15:05 GMT]]></title><description><![CDATA[<p>Du kopiert jedesmal einen neuen Vektor beim Rückgabe wert. Daher sind die Adressen bei end() auch immer unterschiedlich und du erhältst verschiedene Iteratoren. Eigendlich sollte das abstürzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597420</guid><dc:creator><![CDATA[NAJA....]]></dc:creator><pubDate>Sat, 11 Oct 2008 14:15:05 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 14:20:09 GMT]]></title><description><![CDATA[<p>Ohne referenz sieht das so aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int main()
{
    Concert *con = new Concert;
    con-&gt;addSupportBand(&quot;Velvet Underground&quot;);
    con-&gt;addSupportBand(&quot;Black Angels&quot;);
    con-&gt;addSupportBand(&quot;The Duke Spirit&quot;);

    std::vector&lt;std::string&gt; buf = con-&gt;getSupportBands();

    for (std::vector&lt;std::string&gt;::iterator itt = buf.begin(); itt != buf.end(); ++itt) {
        cout &lt;&lt; (*itt) &lt;&lt; endl;

    }
    delete con;

}
</code></pre>
<p>Durch das Zwischenspeichern in buf bleiben die Zeigeradressen (iterator ist nix anderes) valid da sie vom selben container stammen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597425</guid><dc:creator><![CDATA[NAJA]]></dc:creator><pubDate>Sat, 11 Oct 2008 14:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 14:36:28 GMT]]></title><description><![CDATA[<p>@NAJA: ok, danke, das ist einläuchtend.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>btw:<br />
Das du hier std::vector ad absurdum führst ist dir schon klar, oder?<br />
Und immer schön wieder Speicher freigeben am Ende..</p>
</blockquote>
<p>nein, ist mir nicht klar (wirklich nicht), warum?<br />
und keine sorge, im eigentlichen Programm geb ich den Speicher auch wieder frei, das war halt nur der entscheidende Teil den ich hier reinkopiert habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597437</guid><dc:creator><![CDATA[edwood]]></dc:creator><pubDate>Sat, 11 Oct 2008 14:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sat, 11 Oct 2008 14:39:28 GMT]]></title><description><![CDATA[<p>edwood schrieb:</p>
<blockquote>
<p>@NAJA: ok, danke, das ist einläuchtend.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>btw:<br />
Das du hier std::vector ad absurdum führst ist dir schon klar, oder?<br />
Und immer schön wieder Speicher freigeben am Ende..</p>
</blockquote>
<p>nein, ist mir nicht klar (wirklich nicht), warum?<br />
und keine sorge, im eigentlichen Programm geb ich den Speicher auch wieder frei, das war halt nur der entscheidende Teil den ich hier reinkopiert habe.</p>
</blockquote>
<p>Vielleicht meint er weil deine Klasse kaum einen Sinn ergibt weil du vector auf ein push_back reduzierst. Somit könntest du auch einfach</p>
<pre><code class="language-cpp">typedef std::vector&lt;std::string&gt; Concert_t
</code></pre>
<p>schreiben und bräuchstest keine Klasse.</p>
<p>Jedoch ist das sicherlich nur ein klitzekleiner Ausschnitt deines Programms, richtig? <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/1597439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597439</guid><dc:creator><![CDATA[Ich weiß auch nicht]]></dc:creator><pubDate>Sat, 11 Oct 2008 14:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sun, 12 Oct 2008 01:35:45 GMT]]></title><description><![CDATA[<p>Ich weiß auch nicht schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Zum einen das und zum anderen wüsste ich nicht, warum man einen Standardcontainer per new ( ob in einer Klasse gewrappt, oder nicht ) anfordern sollte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597666</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 12 Oct 2008 01:35:45 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sun, 12 Oct 2008 13:14:10 GMT]]></title><description><![CDATA[<p>ich verstehe das problem noch immer nicht, wie ich nämlich schon mal erwähnt habe, ist der gepostete code nur ein kleiner _teil_ vom ganzen, damit ist auch die klasse gemeint die natürlich nicht nur aus einem vector besteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597785</guid><dc:creator><![CDATA[edwood]]></dc:creator><pubDate>Sun, 12 Oct 2008 13:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vector als Rückgabewert on Sun, 12 Oct 2008 14:38:51 GMT]]></title><description><![CDATA[<p>was hältst du davon:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;string&gt;

class Concert {
    public:
        typedef std::vector &lt;std::string&gt; bandContainer;

        const bandContainer&amp; getSupportBands() const { return supportBands; }
        void addSupportBand(const std::string &amp;name) { supportBands.push_back(name); }

    private:
        bandContainer supportBands;
};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;

#include &quot;concert.h&quot;

int main ()
{
Convert bla;
//füllen
for (Concert::bandContainer::const_iterator iter(bla.getSupportBands().begin()), end(bla.getSupportBands().end()); iter != end; ++iter)
{
std::cout &lt;&lt; &quot;Support-Band: &quot; *iter &lt;&lt; &quot;\r\n&quot;;
}
}
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597808</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 12 Oct 2008 14:38:51 GMT</pubDate></item></channel></rss>