<?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[arrayübergabe so fehleranfällig?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich rufe meine funktion in der mein array verändert wird so auf:</p>
<pre><code class="language-cpp">std::vector&lt; double &gt; vec;

Method1(col, 
               dimension, 
               vec);
</code></pre>
<p>und die funktion an sich ist so aufgebaut:</p>
<pre><code class="language-cpp">void
Class::Method1(const int col, 
                        const int dimension, 
                        std::vector&lt; double &gt;&amp; vec)
{
    vec.clear();
    vec.resize(dimension, 0.0);
    vec[col] = 1.0;
}
</code></pre>
<p>Jetzt würde ich gern wissen ob die übergabe so fehlerunanfällig ist? Oder ist es viel besser mit pointern anstatt mit referenzen zu arbeiten?<br />
Oder gar mit kopien in der gecallten funktion?</p>
<p>Danke euch</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161416/arrayübergabe-so-fehleranfällig</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 21:26:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161416.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Oct 2006 11:54:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to arrayübergabe so fehleranfällig? on Fri, 06 Oct 2006 11:54:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich rufe meine funktion in der mein array verändert wird so auf:</p>
<pre><code class="language-cpp">std::vector&lt; double &gt; vec;

Method1(col, 
               dimension, 
               vec);
</code></pre>
<p>und die funktion an sich ist so aufgebaut:</p>
<pre><code class="language-cpp">void
Class::Method1(const int col, 
                        const int dimension, 
                        std::vector&lt; double &gt;&amp; vec)
{
    vec.clear();
    vec.resize(dimension, 0.0);
    vec[col] = 1.0;
}
</code></pre>
<p>Jetzt würde ich gern wissen ob die übergabe so fehlerunanfällig ist? Oder ist es viel besser mit pointern anstatt mit referenzen zu arbeiten?<br />
Oder gar mit kopien in der gecallten funktion?</p>
<p>Danke euch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150540</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Fri, 06 Oct 2006 11:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to arrayübergabe so fehleranfällig? on Fri, 06 Oct 2006 12:04:45 GMT]]></title><description><![CDATA[<p>Ist so in Ordnung, wie du es gemacht hast. Referenzen sind Pointern vorzuziehen, wenn man sie denn verwenden kann. Kopieren ist, insbesondere bei potential großen Objekten wie einem vector, im Allgemeinen keine gute Idee (es sei denn, du brauchst wirklich eine Kopie).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150550</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 06 Oct 2006 12:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to arrayübergabe so fehleranfällig? on Fri, 06 Oct 2006 13:14:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void Class // class &quot;Class&quot;? Das ist hoffentlich nur ein schlechtes Beispiel,
           // kein Bezeichner in deinem tatsaechlichen Code!?
::Method1( // dto.
  std::vector&lt; double &gt;&amp; vec, // hier scheint der vector die Hauptrolle zu
                              // spielen, also nach vorn mit ihm
  const int dimension,
  const int col )
{
  if (dimension &lt;= col) throw std::invalid_argument(&quot;&lt;insert smth. meaningful&gt;&quot;);

  std::vector&lt;double&gt; res(dimension, 0.0);
  res[col] = 1.0;
  vec.swap(res);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1150602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150602</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 06 Oct 2006 13:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to arrayübergabe so fehleranfällig? on Fri, 06 Oct 2006 13:18:46 GMT]]></title><description><![CDATA[<p>Dann sollte man aber auch auf col&lt;0 prüfen. Oder gleich statt operator[] die at-Methode nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150606</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 06 Oct 2006 13:18:46 GMT</pubDate></item><item><title><![CDATA[Reply to arrayübergabe so fehleranfällig? on Fri, 06 Oct 2006 13:32:13 GMT]]></title><description><![CDATA[<p>Z2 schrieb:</p>
<blockquote>
<p>Dann sollte man aber auch auf col&lt;0 prüfen. Oder gleich statt operator[] die at-Methode nehmen.</p>
</blockquote>
<p>Ja, stimmt: <em>s/int/std::size_t</em></p>
<p>edit: Hatte zuerst auch eine alternative Variante mit <em>at</em> reingeschrieben, aber erstens macht es nicht viel Sinn zuerst den vector anzulegen und zweitens finde ich es persönlich stilvoller gleich zu Beginn alle Preconditions zu checken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150611</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 06 Oct 2006 13:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to arrayübergabe so fehleranfällig? on Sat, 07 Oct 2006 17:02:57 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe...<br />
@ finix: ich hätte da noch eine frage zu deinem code</p>
<pre><code class="language-cpp">vec.swap(res);
</code></pre>
<p>warum sollt denn ein neuer vektor angelegt werden den man dann tauscht mit der referenz? Könntest du/ihr mir nochmal evtl. genauer sagen warum du/man das so macht?</p>
<p>Danke vielmals für eure Hilfe und Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151123</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Sat, 07 Oct 2006 17:02:57 GMT</pubDate></item></channel></rss>