<?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[[Gelöst] Rückgabewert: Vektor]]></title><description><![CDATA[<p>Hallöchen <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>
<p>(und schon wieder ein Problemchen mit mir xD)</p>
<p>Ich frage mich ob ich als return-Wert auch einen Vektor setzen kann?<br />
Folgendes habe ich schon fabrizieren können:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main(){
	int v1[3];
	int v2[3];
	int* change(int* v1);

	v1[0] = 1;
	v1[1] = 2;
	v1[2] = 3;

	change(v1);

	for (int i = 0; i &lt; 3; i++){
		cout &lt;&lt; v2[i] &lt;&lt; &quot; &quot;;
	}

	system(&quot;Pause&quot;);

}

int* change(int* v1){

	int  v2[3];
	v2[0] = v1[2];
	v2[1] = v1[1];
	v2[2] = v1[0];

	return v2;
}
</code></pre>
<p>Klar, das bei der Ausgabe die min-Werte herauskommen für v2; ich habe v2 ja initialisiert.</p>
<p>Wie bekomme ich aber mein eigentliches Anliegen hin?<br />
Dass ich eben den v2-Vektor mit der change-Methode befüllen kann?</p>
<p>Vielen lieben Dank schon einmal für eure Hilfe <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="🙂"
    /><br />
(ich hoffe es ist verständlich &gt;__&lt;)</p>
<p>Liebe Grüße,<br />
Norchen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302094/gelöst-rückgabewert-vektor</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 14:07:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302094.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Apr 2012 10:26:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] Rückgabewert: Vektor on Thu, 12 Apr 2012 08:52:32 GMT]]></title><description><![CDATA[<p>Hallöchen <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>
<p>(und schon wieder ein Problemchen mit mir xD)</p>
<p>Ich frage mich ob ich als return-Wert auch einen Vektor setzen kann?<br />
Folgendes habe ich schon fabrizieren können:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main(){
	int v1[3];
	int v2[3];
	int* change(int* v1);

	v1[0] = 1;
	v1[1] = 2;
	v1[2] = 3;

	change(v1);

	for (int i = 0; i &lt; 3; i++){
		cout &lt;&lt; v2[i] &lt;&lt; &quot; &quot;;
	}

	system(&quot;Pause&quot;);

}

int* change(int* v1){

	int  v2[3];
	v2[0] = v1[2];
	v2[1] = v1[1];
	v2[2] = v1[0];

	return v2;
}
</code></pre>
<p>Klar, das bei der Ausgabe die min-Werte herauskommen für v2; ich habe v2 ja initialisiert.</p>
<p>Wie bekomme ich aber mein eigentliches Anliegen hin?<br />
Dass ich eben den v2-Vektor mit der change-Methode befüllen kann?</p>
<p>Vielen lieben Dank schon einmal für eure Hilfe <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="🙂"
    /><br />
(ich hoffe es ist verständlich &gt;__&lt;)</p>
<p>Liebe Grüße,<br />
Norchen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200700</guid><dc:creator><![CDATA[Norchen]]></dc:creator><pubDate>Thu, 12 Apr 2012 08:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Rückgabewert: Vektor on Wed, 11 Apr 2012 10:33:59 GMT]]></title><description><![CDATA[<p>Dein Code ist voller tödlicher Fehler, reine Glückssache, wenn der macht was du möchtest.</p>
<p>Mit vector kannst du umgehen wie mit jedem anderen Datentyp auch (außer Arrays für die Sonderregeln gelten auf die du auch prompt reingefallen bist), das heißt du kannst ihn per return aus der Funktion herauskopieren oder per Referenz direkt ändern. Du scheinst allgemein aber Schwierigkeiten mit den Grundlagen (nicht nur von Arrays) von Gültigkeitsbereichen und Funktionsargumenten zu haben. Da solltest du zuerst einmal Nachholen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200705</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 11 Apr 2012 10:33:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Rückgabewert: Vektor on Wed, 11 Apr 2012 10:52:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int* change(int* v1){

    int  v2[3];
    v2[0] = v1[2];
    v2[1] = v1[1];
    v2[2] = v1[0];

    return v2;
}
</code></pre>
<p>Wie gesagt ist dies absolute Glückssache, da v2 auf dem Stack abgelegt wird, und dieser nach Rücksprung aus der Funktion wieder bereinigt wird. Dein Compiler sollte dir aber auch eine fette Warnung ausspucken.</p>
<p>Mit vector würde ich es wie folgt machen:</p>
<pre><code class="language-cpp">void change( std::vector&lt;int&gt; &amp;result, const int *v1 ) {
    result[0] = v1[0];
    result[1] = v1[1];
    result[2] = v1[2];
}
</code></pre>
<p>Wenn du auf normale arrays bestehst wie folgt:</p>
<pre><code class="language-cpp">void change(int *result, const int *v1) {
    result[0] = v1[0];
    result[1] = v1[1];
    result[2] = v1[2];
}
</code></pre>
<p>&quot;Care must be taken not to exceed the array boundaries.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200721</guid><dc:creator><![CDATA[RedPuma]]></dc:creator><pubDate>Wed, 11 Apr 2012 10:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Rückgabewert: Vektor on Wed, 11 Apr 2012 11:30:38 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18915">@RedPuma</a><br />
Deine Methoden sind auch nicht unbedingt besser. Die Anzahl der Elemente der Vectoren/ Arrays werden gar nicht berücksichtigt.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28243">@Norchen</a><br />
Du hast in deinem Fall grundsätzlich drei Optionen:<br />
1. Die „alte“ Übergabe per Pointer + Größe ( funktioniert mit Vectoren und Arrays )</p>
<pre><code class="language-cpp">void foo( int* massiv, size_t größe )
{
    // Überprüfen was hier angekommen ist.
    // ..dann die eigenen Elemente „zählen“
    // ..und dann, so weit es passt, füllen.
}
</code></pre>
<p>2. Per Reference ( funktioniert nur mit Objekten )</p>
<pre><code class="language-cpp">void foo( std::vector&lt; int &gt;&amp; massiv )
{
    // Überprüfen was hier angekommen ist. ( massiv.size() )
    // .. oder halt first != last sehe die Möglichkeit Nummer 3
    // ..dann die eigenen Elemente „zählen“
    // ..und dann, so weit es passt, füllen.
}
</code></pre>
<p>3. First und Last Iterator ( geht mit beiden )</p>
<pre><code class="language-cpp">template&lt; typename T_Iter &gt;
void foo( T_iter first, T_iter last )
{
    // Überprüfen was hier angekommen ist. ( while ( first != last ) )
    // ..dann die eigenen Elemente „zählen“
    // ..und dann, so weit es passt, füllen.
}
</code></pre>
<p>oder halt ganz speziell für dein Fall:</p>
<pre><code class="language-cpp">void foo( std::vector&lt; int &gt;::iterator first,
          std::vector&lt; int &gt;::iterator last )
{
    // Überprüfen was hier angekommen ist. ( while ( first != last ) )
    // ..dann die eigenen Elemente „zählen“
    // ..und dann, so weit es passt, füllen.
}
</code></pre>
<p>Die dritte Möglichkeit ist IMHO die bessere von 3, weil sie auch STL-conform ist.</p>
<p>Natürlich kann man generell einen vector oder ein Objekt einfach so per copy/move zurückgeben..</p>
<pre><code class="language-cpp">std::vector&lt; int &gt; t = foo(...);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2200751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200751</guid><dc:creator><![CDATA[Travor]]></dc:creator><pubDate>Wed, 11 Apr 2012 11:30:38 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Rückgabewert: Vektor on Thu, 12 Apr 2012 08:51:50 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnellen Antworten.</p>
<p>Ich glaube, ich habe mit dem Beispiel einfach nicht den Kernpunkt verdeutlicht, sondern nur &quot;Mist&quot; gemacht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27972">@Travor</a>: Vielen Dank! Ich werde mir das mal in einer ruhigen Minute zu gemüte führen, ich glaube als Übung für mich schadet das nicht.</p>
<p>Eigentlich ging es nur darum was geschehen muss um einen &quot;Vektor&quot; in dem Falle dann (wohl) einen Pointer als return-Wert zu haben.<br />
Ich glaube, ich habe das dermaßen umständlich erklärt... Tut mir leid <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f623.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--persevering_face"
      title="&gt;.&lt;"
      alt="😣"
    /><br />
(aber ich dachte mit Beispiel ist immer gut...)</p>
<p>Mittlerweile hatte sich das Problem auf Arbeit gelöst.<br />
(Blöd, wenn man kein C++ (komplett) beherrscht und nen Code aufräumen soll.. -.-&quot;)<br />
Er gitb nun auch das zurück was ich will; es muss halt nur über allso benannt werden.</p>
<p>Vielen Dank nochmal &gt;.&lt;&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201048</guid><dc:creator><![CDATA[Norchen]]></dc:creator><pubDate>Thu, 12 Apr 2012 08:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Rückgabewert: Vektor on Thu, 12 Apr 2012 09:13:38 GMT]]></title><description><![CDATA[<p>Ehrlich gesagt klingt das so, als hättest du Mist gemacht. Globale Variablen und/oder Rückgabe von funktionslokalen Objekten lese ich aus deiner Beschreibung heraus. Es ist nur eine Frage der Zeit, bis das explodiert.</p>
<p>Im anderen Thread klingt es auch nicht besser. Du hast die Antworten dort anscheinend nicht wirklich verstanden, da dir der nötige Hintergrund einfach fehlt. Aber ein Chef, der jemand total Ungeschulten unter Zeitdruck auf Pointergefrickel loslässt, hat's irgendwie auch nicht anders verdient.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201061</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 12 Apr 2012 09:13:38 GMT</pubDate></item></channel></rss>