<?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[Kann man mehrere Rechnungen in eine Funktion schreiben ?]]></title><description><![CDATA[<p>Hey,</p>
<p>kann man mehrere Rechnungen (plus, minus, mal, geteilt) in eine int Funktion packen und das Ergebnis wiedergeben ?</p>
<p>Wenn ja wie ? Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327407/kann-man-mehrere-rechnungen-in-eine-funktion-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 20 Jun 2026 02:35:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327407.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Aug 2014 20:38:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 20:38:01 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>kann man mehrere Rechnungen (plus, minus, mal, geteilt) in eine int Funktion packen und das Ergebnis wiedergeben ?</p>
<p>Wenn ja wie ? Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412756</guid><dc:creator><![CDATA[Veardy]]></dc:creator><pubDate>Sat, 09 Aug 2014 20:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 20:39:22 GMT]]></title><description><![CDATA[<p>Meinst du so?</p>
<pre><code>int foo(int a, int b, int c)
{
    return a + b*c;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2412757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412757</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Sat, 09 Aug 2014 20:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 20:40:09 GMT]]></title><description><![CDATA[<pre><code>int funktion(int parameter)
{
    return (parameter + 3 - 7) * 8 / 4;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2412758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412758</guid><dc:creator><![CDATA[hehehohohihi]]></dc:creator><pubDate>Sat, 09 Aug 2014 20:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 21:07:53 GMT]]></title><description><![CDATA[<p>Marthog schrieb:</p>
<blockquote>
<p>Meinst du so?</p>
<pre><code>int foo(int a, int b, int c)
{
    return a + b*c;
}
</code></pre>
</blockquote>
<p>nee, ich meine jetzt zwei verschiedene Ergebnisse zweier Rechnungen in einer Funktion zurückgeben und ausgeben.</p>
<p>Also separate Rechnungen, z.B 3+5 und 4-2 und beide Ergebnisse an verschiedene Typen zurückgeben, sodass man nicht für jede Rechnung eine Funktion erstellen muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412760</guid><dc:creator><![CDATA[Veardy]]></dc:creator><pubDate>Sat, 09 Aug 2014 21:07:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 21:19:44 GMT]]></title><description><![CDATA[<p>Beschreibe einmal was du konkret vorhast. Dann kann man dir den besten helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412764</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sat, 09 Aug 2014 21:19:44 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 21:21:50 GMT]]></title><description><![CDATA[<p>Du hast nur einen Rückgabewert.</p>
<p>Du kannst allerdings Paramter als Refernz (oder Zeiger) definieren. So kannst du noch weitere Werte zurück geben.</p>
<p>Als Beispiel die Standardfunktion <code>modf</code> : <a href="http://www.cplusplus.com/reference/cmath/modf/" rel="nofollow">http://www.cplusplus.com/reference/cmath/modf/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412766</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sat, 09 Aug 2014 21:21:50 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 21:28:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/395">@Dirk</a>: Sowas ist C-Style. In C++ wuerde man dafuer eine Datenstruktur definieren die man dann zurueckgibt. <code>modf</code> wurde ja aus C uebernommen; Siehe lieber <code>std::div</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412768</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 09 Aug 2014 21:28:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Sat, 09 Aug 2014 21:29:28 GMT]]></title><description><![CDATA[<p>Versuch bitte, Fachbegriffe korrekt zu benutzen. Du willst ein Ergebnis nicht an einen &quot;Typ&quot; zurück geben. Ein Typ ist eine Kategorie von Objekten, kein Objekt selbst. So wie &quot;Politiker&quot; sich zu &quot;Angela Merkel&quot; (der Person, nicht dem Namen<sup>*</sup>) verhält.</p>
<p>Du beschreibst so etwas wie:</p>
<pre><code>void diff_and_sum_with_references(int i, int j, int &amp;diff, int &amp;sum)
{
  diff = i - j;
  sum = i + j;
}

std::tuple&lt;int, int&gt; diff_and_sum_with_tuples(int i, int j)
{
  return std::make_tuple(i - j, i + j);
}

int main()
{
  int i = 4, j =7;
  int diff, sum;
  diff_and_sum_with_references(i, j, diff, sum);
  // oder
  std::tie(diff, sum) = diff_and_sum_with_tuples(i, j);
}
</code></pre>
<p><sup>*</sup>: Wenn du verstehst, warum dieser Zusatz notwendig war, dann bist du auf einem guten Weg, die Begriffe richtig zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412769</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Aug 2014 21:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 13:52:26 GMT]]></title><description><![CDATA[<p>Hey das ist jetzt vielleicht etwas spät aber wenn du in einer Funktion<br />
mehrere Werte zurück geben willst könntest du auch Pointer benutzen das<br />
ist vielleicht einfacher.</p>
<pre><code>int result, second_result;
int *p_result = &amp;result;
int *p_second_result = &amp;second_result;

void calc_function(int *result, int second_result)
{
  *result = 3+4;
  *second_result = 6*2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2413260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413260</guid><dc:creator><![CDATA[MNowo]]></dc:creator><pubDate>Wed, 13 Aug 2014 13:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 13:53:20 GMT]]></title><description><![CDATA[<p>MNowo schrieb:</p>
<blockquote>
<p>Hey das ist jetzt vielleicht etwas spät aber wenn du in einer Funktion<br />
mehrere Werte zurück geben willst könntest du auch Pointer benutzen das<br />
ist vielleicht einfacher.</p>
<pre><code>int result, second_result;
int *p_result = &amp;result;
int *p_second_result = &amp;second_result;

void calc_function(int *result, int second_result)
{
  *result = 3+4;
  *second_result = 6*2;
}
</code></pre>
</blockquote>
<p>Kann man schon, macht man aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413261</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 13 Aug 2014 13:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 13:55:17 GMT]]></title><description><![CDATA[<p>Oh wieso nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413262</guid><dc:creator><![CDATA[MNowo]]></dc:creator><pubDate>Wed, 13 Aug 2014 13:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 13:56:18 GMT]]></title><description><![CDATA[<p>MNowo schrieb:</p>
<blockquote>
<p>Oh wieso nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Weil Pointer. Keiner mag Pointer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413263</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 13 Aug 2014 13:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 13:59:14 GMT]]></title><description><![CDATA[<p>Öhm okay...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413264</guid><dc:creator><![CDATA[MNowo]]></dc:creator><pubDate>Wed, 13 Aug 2014 13:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:02:34 GMT]]></title><description><![CDATA[<p>MNowo schrieb:</p>
<blockquote>
<p>[...] wenn du in einer Funktion mehrere Werte zurück geben willst könntest du auch Pointer benutzen das ist vielleicht einfacher.</p>
<pre><code>/*...*/
</code></pre>
</blockquote>
<p>Mit Pointern ist es einfacher als mit Referenzen!? Erzähl mal ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413265</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:02:18 GMT]]></title><description><![CDATA[<p>Also ich würds so machen:</p>
<pre><code>std::vector&lt;int&gt; funktion(std::vector&lt;int&gt; const &amp;x)
{
    std::vector&lt;int&gt; y(3);
    y[0] = x[0] + x[1];
    y[1] = 2*x[1]
    y[2] = x[0]/x[1];
    return y;
}
</code></pre>
<p>Das wäre zum Beispiel eine Funktion vom R^2 -&gt; R^3, also zwei Inputs und drei Outputs. Alternativ halt direkt mit Iteratoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413266</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:03:19 GMT]]></title><description><![CDATA[<p>MNowo schrieb:</p>
<blockquote>
<p>Öhm okay...</p>
</blockquote>
<p>Darüber hinaus hat der Pointeransatz (neben der umständlicheren Syntax*) den Nachteil, dass man auch nullptr übergeben kann und somit dereferenzieren nicht definiert ist.<br />
Wenn man eine Signatur mit (nicht const) Pointern oder Referenzen sieht, hat das zwei unterschiedliche Bedeutungen:<br />
-Referenz: Ein Outputparamater.<br />
-Pointer: Ein optionaler Outputparamter.<br />
Das ist dann wieder der Fall, dass guter Code sich selbst dokumentiert.</p>
<p>*Manche sehen das auch als Vorteil, weil man so leichter erkennen kann, ob Elemente in der Funktion verändert werden, imo sollte man sich aber eh die Funktionssignatur anschauen und da siehts man auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413267</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:03:59 GMT]]></title><description><![CDATA[<p>Achso ja Referenzen sind natürlich noch einfacher aber die benutze ich nicht oft<br />
drum sind mir die Pointer spontan eingefallen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413268</guid><dc:creator><![CDATA[MNowo]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:03:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:06:54 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Also ich würds so machen:</p>
<pre><code>std::vector&lt;int&gt; funktion(std::vector&lt;int&gt; const &amp;x)
{
    std::vector&lt;int&gt; y(3);
    y[0] = x[0] + x[1];
    y[1] = 2*x[1]
    y[2] = x[0]/x[1];
    return y;
}
</code></pre>
<p>Das wäre zum Beispiel eine Funktion vom R^2 -&gt; R^3, also zwei Inputs und drei Outputs. Alternativ halt direkt mit Iteratoren.</p>
</blockquote>
<p>Naja.<br />
Das dokumentiert jetzt wieder anders, wenn man nur die Signatur sieht.<br />
Das ist dann ein &quot;diese Funktion verarbeitet eine Menge an Elementen, sie kann on-the-fly beliebig viele neue erzeugen oder löschen&quot;.<br />
Besser wäre</p>
<pre><code>std::array&lt;int, 3&gt; funktion(const std::array&lt;int, 2&gt; &amp;);
</code></pre>
<p>Das heißt: Diese Funktion verarbeitet eine Menger von 2 Elementen und erzeugt daraus 3 neue. Es hat einen größeren Dokumentationswert, ist allerdings immer noch nicht dasselbe, was die Pointer/Referenzen dokumentieren.<br />
Und mit Iteratoren hätte man: Diese Funktion verarbietet irgendeine Sequenz an Werten. Auch nicht das, was eine Referenz sagt.<br />
Den höchsten Dokumentationsgehalt hat man aber immer noch mit einer eigens konstruiertem Typen(typedef).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413270</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:09:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/31904">@MNowo</a>:<br />
Du hast recht: Zeiger gehen auch. Mancher bevorzugt auch Zeiger vor non-const Referenzen.</p>
<p>Eventuell gehöre ich künftig auch dazu, nachdem ich gestern über align gelesen habe (<a href="http://en.cppreference.com/w/cpp/memory/align" rel="nofollow">http://en.cppreference.com/w/cpp/memory/align</a>)...<br />
Das ist schon eine rechte Sauerei, wenn man nix böses denkt, die Signatur überfliegt(!) und nur das Beispiel liest... <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/2413272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413272</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:16:47 GMT]]></title><description><![CDATA[<p>Verzeihung wenn ich ein bischen doof Frage aber was meint ihr denn die<br />
ganze Zeit mit &quot;Signatur&quot; von funktionen und dergleichen der Begriff<br />
ist mir ehrlich gesagt noch nie untergekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413273</guid><dc:creator><![CDATA[MNowo]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:16:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:22:33 GMT]]></title><description><![CDATA[<p>MNowo schrieb:</p>
<blockquote>
<p>Verzeihung wenn ich ein bischen doof Frage aber was meint ihr denn die<br />
ganze Zeit mit &quot;Signatur&quot; von funktionen und dergleichen der Begriff<br />
ist mir ehrlich gesagt noch nie untergekommen.</p>
</blockquote>
<p>Ich habe den Begriff ehrlich gesagt falsch verwendet.<br />
Ich hätte streng genommen eigentlich die Funktionsdeklaration sagen müssen, schließlich bezog ich mich auch auf den Rückgabewert, der bei nicht-Templates nicht zur Signatur gehört.<br />
Die Signatur einer Funktion bezeichnet alle Informationen, die beim Überladen wichtig sind.<br />
Das sind u.a. der Name, der Typ und die Reihenfolge der Paramater etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413274</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:22:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 14:25:26 GMT]]></title><description><![CDATA[<p>Acho okay vielen dank <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/2413275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413275</guid><dc:creator><![CDATA[MNowo]]></dc:creator><pubDate>Wed, 13 Aug 2014 14:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 15:39:14 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Naja.<br />
Das dokumentiert jetzt wieder anders, wenn man nur die Signatur sieht.<br />
Das ist dann ein &quot;diese Funktion verarbeitet eine Menge an Elementen, sie kann on-the-fly beliebig viele neue erzeugen oder löschen&quot;.</p>
</blockquote>
<p>Ja, aber das kann sowieso jede Funktion intern ohne das man es ihr an der Signatur ansehen würde.</p>
<p>Nathan schrieb:</p>
<blockquote>
<p>Besser wäre</p>
<pre><code>std::array&lt;int, 3&gt; funktion(const std::array&lt;int, 2&gt; &amp;);
</code></pre>
<p>Das heißt: Diese Funktion verarbeitet eine Menger von 2 Elementen und erzeugt daraus 3 neue. Es hat einen größeren Dokumentationswert,</p>
</blockquote>
<p>Kommt halt darauf an was man haben will. Wenn die Funktion Vektoren einer beliebigen Länge nehmen soll oder x sehr groß ist geht das halt eh nicht mehr. Und dann würde ich lieber aus Konsistenz-Gründen auch bei Funktionen mit kleinem x nen std::vector nehmen.</p>
<p>Nathan schrieb:</p>
<blockquote>
<p>ist allerdings immer noch nicht dasselbe, was die Pointer/Referenzen dokumentieren.</p>
</blockquote>
<p>Versteh ich nicht, x ist doch eine const Referenz bei mir/dir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413288</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Wed, 13 Aug 2014 15:39:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 15:51:32 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Naja.<br />
Das dokumentiert jetzt wieder anders, wenn man nur die Signatur sieht.<br />
Das ist dann ein &quot;diese Funktion verarbeitet eine Menge an Elementen, sie kann on-the-fly beliebig viele neue erzeugen oder löschen&quot;.</p>
</blockquote>
<p>Ja, aber das kann sowieso jede Funktion intern ohne das man es ihr an der Signatur ansehen würde.</p>
</blockquote>
<p>Ja, aber intern. Was eine Funktion intern macht ist wurscht, aber es kann ja sein, dass sie unter gegebenen Umständen vielleicht auch mal 5 Element zurückgibt, oder keins.</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Besser wäre</p>
<pre><code>std::array&lt;int, 3&gt; funktion(const std::array&lt;int, 2&gt; &amp;);
</code></pre>
<p>Das heißt: Diese Funktion verarbeitet eine Menger von 2 Elementen und erzeugt daraus 3 neue. Es hat einen größeren Dokumentationswert,</p>
</blockquote>
<p>Kommt halt darauf an was man haben will. Wenn die Funktion Vektoren einer beliebigen Länge nehmen soll oder x sehr groß ist geht das halt eh nicht mehr. Und dann würde ich lieber aus Konsistenz-Gründen auch bei Funktionen mit kleinem x nen std::vector nehmen.</p>
</blockquote>
<p>Wenn sie Vektoren mit beliebiger Länge nehmen soll ist das etwas anderes.<br />
Und nur aus Konsistenzgründen muss man dann halt zusätzlich dokumentieren.</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>ist allerdings immer noch nicht dasselbe, was die Pointer/Referenzen dokumentieren.</p>
</blockquote>
<p>Versteh ich nicht, x ist doch eine const Referenz bei mir/dir.</p>
</blockquote>
<p>Nein, die Parameter so als Referenz zu nehmen:</p>
<pre><code>void foo(int x, int &amp;a, int &amp;b);
</code></pre>
<p>Heißt: foo nimmt ein x und berechnet daraus zwei andere Werte.</p>
<pre><code>std::array&lt;int, 2&gt; foo(int x);
</code></pre>
<p>Heißt: foo nimmt ein x und berechnet daraus ein Array der Größe 2 (nicht ganz dasselbe wie oben).</p>
<pre><code>std::vector&lt;int&gt; foo(int x);
</code></pre>
<p>Heißt: foo nimmt ein x und berechnet daraus irgendeine Menge an int-Werten (etwas ganz anderes als oben).</p>
<pre><code>std::vector&lt;int&gt; foo(const std::vector&lt;int&gt; &amp;x);
</code></pre>
<p>Heißt: foo nimmt eine Menge an Werten und berechnet daraus eine andere Menge an Werten (etwas grundsätzlich und komplett anderes als die erste Version).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413290</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 13 Aug 2014 15:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 16:00:23 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Nein, die Parameter so als Referenz zu nehmen:</p>
<pre><code>void foo(int x, int &amp;a, int &amp;b);
</code></pre>
<p>Heißt: foo nimmt ein x und berechnet daraus zwei andere Werte.</p>
<pre><code>std::array&lt;int, 2&gt; foo(int x);
</code></pre>
<p>Heißt: foo nimmt ein x und berechnet daraus ein Array der Größe 2 (nicht ganz dasselbe wie oben).</p>
</blockquote>
<p>Naja, aber ist der Unterschied in irgendeiner Weise relevant?</p>
<p>Also die erste Variante lässt sich eh nur bei sehr wenigen Parametern benutzerfreundlich verwenden, da man sonst schnell ne kilometer lange Parameter Liste hat. Deswegen würde ich wenn dann gleich die zweite Variante nehmen (zumindest in einem Mathematischen Kontext).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413294</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Wed, 13 Aug 2014 16:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man mehrere Rechnungen in eine Funktion schreiben ? on Wed, 13 Aug 2014 18:29:33 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>Naja, aber ist der Unterschied in irgendeiner Weise relevant?</p>
</blockquote>
<p>Ja! Es drückt ganz was anderes aus. Werte in einem Array gehören logisch zusammen, sind von der gleichen Art. Eine Funktion, die beispielsweise den Mittelwert und Standardabweichung einer Datenmenge berechnet würde die beiden Werte niemals gemeinsam in einem Array zurück geben (ein pair oder ein tuple wären aber ok). Andererseits wäre es durchaus ok, eine Funktion, die einen Punkt in 2D-Koordinaten berechnet, diese als ein Array zurück geben zu lassen, eine getrennte Rückgabe über Referenzen oder die Rückgabe über eine unpassende Datenstruktur (pair, tuple) wäre eher ungewöhnlich (am allerbesten wäre natürlich eine mathematische Vektorklasse).</p>
<p>Illustrierendes Beispiel, indem ich Nathans Beispiel leicht abändere:</p>
<pre><code>void foo(int x, int &amp;a, string &amp;b);
</code></pre>
<p>Das demonstriert, wie wenig a und b miteinander zu tun haben können. Das passt nicht mehr in ein Array. Ein Array drückt logische Gemeinsamkeiten aus, nicht zufällige Gemeinsamkeit der Datentypen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413316</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Aug 2014 18:29:33 GMT</pubDate></item></channel></rss>