<?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[Vektoren übergeben]]></title><description><![CDATA[<p>Hey zusammen,</p>
<p>ich habe ein Problem. Und zwar habe ich eine Klasse, die eine Funktion hat, die einkommende Zahlenpaare der Form(Id =6, Ergebnis = <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> in einen Vektor einsortiert.</p>
<p>Jetzt will ich, dass der Vektor zurückgegeben wird, damit ich mir ihm an andere STelle des Programms in einer anderen Funktion einer anderen Klasse weiterarbeiten kann. Geht das?</p>
<pre><code class="language-cpp">struct Ergebnis {
  int ID;
  double Wert;
};

class Speichern
{
  ??? storeResult (int ID, double Ergebnis);
  Ergebnis &lt;int&gt; dieBesten[3];
}
</code></pre>
<pre><code class="language-cpp">??? Speichern::storeResult (int id, double wert) {

//Vektor wird gefüllt

return //den gesamten Vektor mit Inhalt

}
</code></pre>
<p>Dankeschön</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/140335/vektoren-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 00:18:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140335.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Mar 2006 10:18:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 10:18:52 GMT]]></title><description><![CDATA[<p>Hey zusammen,</p>
<p>ich habe ein Problem. Und zwar habe ich eine Klasse, die eine Funktion hat, die einkommende Zahlenpaare der Form(Id =6, Ergebnis = <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> in einen Vektor einsortiert.</p>
<p>Jetzt will ich, dass der Vektor zurückgegeben wird, damit ich mir ihm an andere STelle des Programms in einer anderen Funktion einer anderen Klasse weiterarbeiten kann. Geht das?</p>
<pre><code class="language-cpp">struct Ergebnis {
  int ID;
  double Wert;
};

class Speichern
{
  ??? storeResult (int ID, double Ergebnis);
  Ergebnis &lt;int&gt; dieBesten[3];
}
</code></pre>
<pre><code class="language-cpp">??? Speichern::storeResult (int id, double wert) {

//Vektor wird gefüllt

return //den gesamten Vektor mit Inhalt

}
</code></pre>
<p>Dankeschön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015850</guid><dc:creator><![CDATA[C++ ist cool]]></dc:creator><pubDate>Tue, 14 Mar 2006 10:18:52 GMT</pubDate></item><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 10:20:49 GMT]]></title><description><![CDATA[<p>müsste mit typedef gehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015853</guid><dc:creator><![CDATA[ser1al]]></dc:creator><pubDate>Tue, 14 Mar 2006 10:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 10:26:52 GMT]]></title><description><![CDATA[<p>Und wie mache ich das mit Typedef?????<br />
Ne Idee? Ein bißl Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015857</guid><dc:creator><![CDATA[C++ ist cool]]></dc:creator><pubDate>Tue, 14 Mar 2006 10:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 10:37:01 GMT]]></title><description><![CDATA[<p>aber nur ganz einfach <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">typedef vector&lt;int&gt; myVec;

myVec GetVector()
{
 myVec vec;
 vec.push_back(10);
 vec.push_back(20);
 return vec;
}

int main(int argc, char* argv[])
{
 myVec vect = GetVector();
 cout&lt;&lt;vect[0]&lt;&lt;endl;
 cout&lt;&lt;vect[1];

        return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1015864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015864</guid><dc:creator><![CDATA[ser1al]]></dc:creator><pubDate>Tue, 14 Mar 2006 10:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 11:32:26 GMT]]></title><description><![CDATA[<p>Was hat denn typedef mit seiner Frage zu tun? Und dann auch noch als Return by Value? Da freut sich der User, wenn ein Vector mit ein paar Mio. Elementen zurück gegeben wird.</p>
<p>Am besten by reference als Parameter übergeben oder per Smartpointer zurück geben:</p>
<pre><code class="language-cpp">void fillVector(std::vector&lt;int&gt; &amp;vec) // auf das &amp;-Zeichen achten!
{
   vec.push_back(1);
   vec.push_back(2);
   vec.push_back(3);
}
</code></pre>
<pre><code class="language-cpp">std::auto_ptr&lt;std::vector&lt;int&gt; &gt; createVector() {
     std::auto_ptr&lt;std::vector&lt;int&gt; &gt; vec(new std::vector&lt;int&gt;());
     return vec;
}
</code></pre>
<p>typedef ist nur eine Erleichterung, um den Code 1. übersichtlich und 2. wartbarer zu halten. Aber das eigentliche Problem löst es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015935</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 14 Mar 2006 11:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 11:48:47 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Was hat denn typedef mit seiner Frage zu tun?<br />
Und dann auch noch als Return by Value? Da freut sich der User, wenn ein Vector mit ein paar Mio. Elementen zurück gegeben wird.</p>
</blockquote>
<p>er wollte einen vector zurückgegeben haben, das habe ich ihm erklärt!<br />
das ein by reference wohl besser ist, ist klar!</p>
<p>Artchi schrieb:</p>
<blockquote>
<p>typedef ist nur eine Erleichterung, um den Code 1. übersichtlich und 2. wartbarer zu halten. Aber das eigentliche Problem löst es nicht.</p>
</blockquote>
<p>und wie sieht es bei der rückgabe von funktionszeiger aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015947</guid><dc:creator><![CDATA[ser1al]]></dc:creator><pubDate>Tue, 14 Mar 2006 11:48:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vektoren übergeben on Tue, 14 Mar 2006 12:34:43 GMT]]></title><description><![CDATA[<p>wenn es logisch richtig ist, einen vector zurückzugeben, gibt man keine referenz zurück. ein auto_ptr&lt;vector&lt;T&gt; &gt; ist allerdings auch nicht schön. wer spass daran hat, kann zum optimieren ein bisschen move-semantik ins spiel bringen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class foo_mover
{
private:
    struct foo_mover_ref
    {
        foo_mover_ref(T&amp; t) : p_( &amp;t ) {}
        T* p_;
    };
public:
    foo_mover(const T&amp; src) : v_() { swap( v_, const_cast&lt; T&amp; &gt;( src ) ); }
    foo_mover(foo_mover&amp; other) : v_() { swap_( v_, other.v_ ); }
    foo_mover(foo_mover_ref ref) : v_() { swap( v_, *ref.p_ ); }
    foo_mover&amp; operator=(foo_mover&amp; other)
    {
        swap( v_, other.v_ );
        return *this;
    }
    foo_mover&amp; operator=(foo_mover_ref ref)
    {
        swap( v_, *ref.p_ ); }
        return *this;
    }
    T&amp; movee() { return v_; }
    operator foo_mover_ref() { return foo_mover_ref( v_ ); }
private:
    T v_;
};

using namespace std;
vector_mover&lt; vector&lt; int &gt; &gt; foo()
{
    vector&lt;int&gt; v;
    v.push_back( 1 );
    v.push_back( 2 );
    return v;
}

int main()
{
    vector&lt; int &gt; v;
    v.swap( foo().movee() );
}
</code></pre>
<p>die destruktive copy-semantik des auto_ptr wird damit (nahezu) universell möglich ohne die doppelte indirektion des auto_ptrs zu benötigen. der const_cast ist leider notwendig (wir möchten ja vielleicht den vector direkt im return-statement erzeugen) und gefährlich - da müssen wir auf rvalue-referenzen warten (und dann wird das ganze möglicherweise sowieso überflüssig, falls sich das kommittee entschliesst, die container mit move-konstruktoren zu ergänzen). das swap (dort wo die funktion aufgerufen wird) ist leider immer noch umständlich (bei selbsterstellten klassen kann man nat. entsprechende konstruktoren, assignment-operatoren bereitstellen, so das der ganze vorgang transparent ist)- und langsamer als der fall, wenn andernfalls copy-elision angewandt wird - dafür funktioniert es immer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015994</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 14 Mar 2006 12:34:43 GMT</pubDate></item></channel></rss>