<?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 in Ausdruch erzeugen]]></title><description><![CDATA[<p>Hi Forum,</p>
<p>Gibt es eine Möglichkeit folgenden Code zu verkürzen?</p>
<pre><code class="language-cpp">int array[] = {1, 2, 3};
myfunc(array);
</code></pre>
<p>Ich hatte da an eine solche Variante gedacht: (die aber leider nicht geht)</p>
<pre><code class="language-cpp">myfunc({1, 2, 3});
</code></pre>
<p>Mfg X4rd3n</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223405/array-in-ausdruch-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 20:15:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223405.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Sep 2008 15:39:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 15:39:23 GMT]]></title><description><![CDATA[<p>Hi Forum,</p>
<p>Gibt es eine Möglichkeit folgenden Code zu verkürzen?</p>
<pre><code class="language-cpp">int array[] = {1, 2, 3};
myfunc(array);
</code></pre>
<p>Ich hatte da an eine solche Variante gedacht: (die aber leider nicht geht)</p>
<pre><code class="language-cpp">myfunc({1, 2, 3});
</code></pre>
<p>Mfg X4rd3n</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587976</guid><dc:creator><![CDATA[x4rd3n]]></dc:creator><pubDate>Thu, 25 Sep 2008 15:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 15:50:54 GMT]]></title><description><![CDATA[<p>Nein. Das nennt sich Initialisierungsliste und wird nur benötigt, um Arrays (und POD-Structs) zu initialisieren. Es gäbe vielleicht eine Methode mit Überladung des Komma-Operators oder Funktionen mit variabler Anzahl Argumente, aber das sind beides sehr hässliche und fehleranfällige Varianten.</p>
<p>Abgesehen davon sollte man sowieso keine Arrays übergeben (zumindest nicht ohne Grössenangabe). Benutz doch STL-Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587983</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Sep 2008 15:50:54 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 15:58:57 GMT]]></title><description><![CDATA[<p>Soweit ich weiß müsste bei STL-Containern doch auch den Umweg über die Variable machen oder?</p>
<p>Längenangabe für das Array brauch ich nicht weil es immer gleich lang ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587990</guid><dc:creator><![CDATA[x4rd3n]]></dc:creator><pubDate>Thu, 25 Sep 2008 15:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 16:03:03 GMT]]></title><description><![CDATA[<p>x4rd3n schrieb:</p>
<blockquote>
<p>Soweit ich weiß müsste bei STL-Containern doch auch den Umweg über die Variable machen oder?</p>
</blockquote>
<p>Ja. Man könnte zwar schon eine Frickelei mit temporären Objekten machen, aber das lohnt sich nicht (es sei denn, du benötigst nur einen der Containerkonstruktoren, z.B. für 5 gleiche Elemente). Was ist überhaupt so schlimm daran? Dass man es in Java kann und in C++ nicht? Falls ja, solltest du deine Einstellung von Grund auf ändern...</p>
<p>x4rd3n schrieb:</p>
<blockquote>
<p>Längenangabe für das Array brauch ich nicht weil es immer gleich lang ist.</p>
</blockquote>
<p>Wenn du die Längenangabe sowieso schon weisst, wieso machst du nicht eine Funktion mit genau so vielen Parametern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587993</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Sep 2008 16:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 16:10:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>x4rd3n schrieb:</p>
<blockquote>
<p>Soweit ich weiß müsste bei STL-Containern doch auch den Umweg über die Variable machen oder?</p>
</blockquote>
<p>Ja. Man könnte zwar schon eine Frickelei mit temporären Objekten machen, aber das lohnt sich nicht (es sei denn, du benötigst nur einen der Containerkonstruktoren, z.B. für 5 gleiche Elemente). Was ist überhaupt so schlimm daran? Dass man es in Java kann und in C++ nicht? Falls ja, solltest du deine Einstellung von Grund auf ändern...</p>
</blockquote>
<p>Ich wollte mir halt die Arbeit sparen mir jedesmal neue Namen für das Array ausdeken zu müssen. Auch würde beim Umweg über die Initialiesierung auch jedesmal ein bisschen Speicherplatz belegt werden oder?</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>x4rd3n schrieb:</p>
<blockquote>
<p>Längenangabe für das Array brauch ich nicht weil es immer gleich lang ist.</p>
</blockquote>
<p>Wenn du die Längenangabe sowieso schon weisst, wieso machst du nicht eine Funktion mit genau so vielen Parametern?</p>
</blockquote>
<p>Bei einem Array kann ich leichter mit optionalen Parameter arbeiten :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588000</guid><dc:creator><![CDATA[x4rd3n]]></dc:creator><pubDate>Thu, 25 Sep 2008 16:10:48 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 16:14:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void foo(int* arr){
     for(int i=0; i&lt;5; ++i)
             std::cout &lt;&lt; arr[i] &lt;&lt; std::endl;
}

foo((int[]){1,2,3,4,5});
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1588004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588004</guid><dc:creator><![CDATA[user13]]></dc:creator><pubDate>Thu, 25 Sep 2008 16:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 16:20:28 GMT]]></title><description><![CDATA[<p>Super, Danke! Es geht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588010</guid><dc:creator><![CDATA[x4rd3n]]></dc:creator><pubDate>Thu, 25 Sep 2008 16:20:28 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 17:03:13 GMT]]></title><description><![CDATA[<p>dann noch ein makro definieren für die schreibfaulen und dann sieht es aus wie dein plan...<br />
und öffnet neuen fehlerquellen tor und tür...:D *duckundweg*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588044</guid><dc:creator><![CDATA[mhm]]></dc:creator><pubDate>Thu, 25 Sep 2008 17:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 17:11:12 GMT]]></title><description><![CDATA[<p>Versuch mal ein bisschen genauer zu argumentieren, wenn überhaupt weißt, wovon du da sprichst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588048</guid><dc:creator><![CDATA[user13]]></dc:creator><pubDate>Thu, 25 Sep 2008 17:11:12 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 18:18:00 GMT]]></title><description><![CDATA[<p>user13 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void foo(int* arr) //...
foo((int[]){1,2,3,4,5});
</code></pre>
</blockquote>
<p>Hach wie ich solchen Code doch liebe... ups ein , vergessen...</p>
<pre><code class="language-cpp">foo((int[]){1,2,3,45});
</code></pre>
<p>Und schon hat man einen Fehler im Programm, den der Compiler wohl in der Regel nicht finden kann... Und damit meine ich nicht einfach das es ein Wertefehler ist (undefiniertes Verhalten trifft die Sache durchaus auf den Punkt).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588082</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 25 Sep 2008 18:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 18:34:05 GMT]]></title><description><![CDATA[<p>Wobei ich mich generell frage, was die Motivation dahinter ist, alles in eine Zeile zu packen. In so einem Falle sollte man aber auch Makros so exzessiv wie möglich nutzen...</p>
<p>Wenn man sicher gehen will, dass das Array nachher nicht mehr existiert, weil es ja um die paar Byte schade sein könnte, kann man auch einen lokalen Block erstellen:</p>
<pre><code class="language-cpp">{
   int Array[] = {3, 1, 5, 7, 9};
   Function(Array);
}
</code></pre>
<p>Grundsätzlich wäre <code>std::vector</code> zwar sicherer, aber vielleicht für etwas konstantes, Datenbank-ähnliches nicht so komfortabel (zumal man für jedes Element <code>push_back()</code> aufrufen muss, wenn man nicht gerade mit Boost.Assign oder so arbeitet)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588097</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Sep 2008 18:34:05 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 19:48:01 GMT]]></title><description><![CDATA[<p>[quote Nexus]Wobei ich mich generell frage, was die Motivation dahinter ist, alles in eine Zeile zu packen. In so einem Falle sollte man aber auch Makros so exzessiv wie möglich nutzen... [/quote]<br />
Es gibt zwei Gruppen von Menschen:<br />
die erste Gruppe würde &quot;strcpy&quot; implementieren als:</p>
<pre><code class="language-cpp">//...
	size_t length = strlen(quelle);
	for(size_t i=0; i&lt;=length; i++) ziel[i] = quelle[i];
//...
</code></pre>
<p>und die zweite Gruppe als:</p>
<pre><code class="language-cpp">//..
	while(*ziel++ = *quelle++);
//...
</code></pre>
<p>Ein erfahrener C/C++-Programmierer würde wohl das zweite Beispiel vorziehen.<br />
Und wenn es ausreichend übersichtlich ist, dann packt man auch Einiges in eine Zeile.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a>:<br />
Na, das ist ja wunderbar. Dann halt:</p>
<pre><code class="language-cpp">const unsigned SIZE = 5;
foo( (int[SIZE]){1,2,3,4,5} );
</code></pre>
<p>Und hättest du hier ein Problem gehabt, dann würdest du auch mit einem benamten Array dieses Problem haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588128</guid><dc:creator><![CDATA[user13]]></dc:creator><pubDate>Thu, 25 Sep 2008 19:48:01 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 19:53:04 GMT]]></title><description><![CDATA[<p>user13 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a>:<br />
Na, das ist ja wunderbar. Dann halt:</p>
<pre><code class="language-cpp">const unsigned SIZE = 5;
foo( (int[SIZE]){1,2,3,4,5} );
</code></pre>
<p>Und hättest du hier ein Problem gehabt, dann würdest du auch mit einem benamten Array dieses Problem haben.</p>
</blockquote>
<p>Dann passen wir jetzt mal foo an, das es mit 6 Parametern arbeiten kann. Und ja, ich würde garnicht zum C-Array greifen. Die STL und TR1 bieten sicherere Alternativen. Sei es nun std::vector oder std::tr1::array.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588129</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 25 Sep 2008 19:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 20:01:21 GMT]]></title><description><![CDATA[<p>user13 schrieb:</p>
<blockquote>
<p>Ein erfahrener C/C++-Programmierer würde wohl das zweite Beispiel vorziehen.</p>
</blockquote>
<p>Und das aus gutem Grund. Der allerdings nicht darin besteht, dass die zweite Variante in eine Zeile passt. Das ist ein netter Nebeneffekt. Hauptgrund ist die höherere Performance. Wenn die Performance der ersten Variante höher wäre, dann wäre strcpy auch so implementiert, unabhängig davon ob's dafür mehr Zeilen braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588135</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 25 Sep 2008 20:01:21 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 20:34:16 GMT]]></title><description><![CDATA[<p><strong>@ user13:</strong><br />
Netter Trick mit dem <code>strcpy()</code> . Nur kommt man glaube ich selten auf die Idee, zuerst mit <code>strlen()</code> die Länge abzufragen, um dann nochmals alle Zeichen bis zum '\0' durchzuiterieren. Mich wundert es eigentlich, dass du nicht auf die Idee gekommen bist, <code>strlen(quelle)</code> gerade in den Schleifenkopf zu schreiben.</p>
<p>Womit schon wieder eine Zeile wegfallen würde.</p>
<p>Und was das Standardargument Performance betrifft: Woher weisst du, wie viel es ausmacht, wenn man zuerst ein Objekt erzeugt und dann dieses übergibt? Bzw. ob es überhaupt was ausmacht?</p>
<p>Naja, hier finde ich &quot;premature optimization is the root of all evil in programming&quot; ganz passend... Es gibt leider einfach zu viele Leute, die für einige Nanosekunden die Sicherheit und Übersichtlichkeit des Codes aufs Spiel setzen. Schau doch nur mal die C++-Streams an, die sind nicht gerade performant. Es ist aber auch jedem überlassen, <code>printf()</code> und Co. zu verwenden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588150</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Sep 2008 20:34:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 22:46:26 GMT]]></title><description><![CDATA[<p>Also gut. Ich will nicht von jedem in einen Disput verwickelt werden.</p>
<blockquote>
<p>Und was das Standardargument Performance betrifft: Woher weisst du, wie viel es ausmacht, wenn man zuerst ein Objekt erzeugt und dann dieses übergibt? Bzw. ob es überhaupt was ausmacht?</p>
</blockquote>
<p>Ich bin in keinem meiner Beiträge auf die Performance eingeganen, sondern auf die Prägnanz.</p>
<p>Die Beispiele sollten nur klar machen, dass man statt &quot;lang und übersichtlich&quot; wohl eher &quot;kurz und übersichtlich&quot; nehmen würde. Ich wollte gar nicht auf die Performance eingehen, da würe ich eher etwas in Richtung Duff's device nehmen, wenn sie gefordert wird.<br />
Na dann halt so:</p>
<pre><code class="language-cpp">entweder:
//..
    while(*quelle != '\0'){
	*ziel = *quelle;
	*ziel++;
	*quelle++;
	}
    *ziel = '\0';
//...

oder:
//..
    while(*quelle != '\0'){
	*ziel++ = *quelle++;
	}
    *ziel = '\0';
//...

oder:
//..
    size_t i;
    for(i=0; quelle[i]!='\0'; i++) ziel[i] = quelle[i];
    quelle[i] = '\0';
//..

und nocht tausende weitere, wenn ihr wollt......

oder letzten Endes:
//..
    while(*ziel++ = *quelle++);
//...
</code></pre>
<p>Was jetzt? Irgendwelche Performance Unterschiede? Wohl eher nicht.<br />
Und? Was werdet ihr nehmen? Klar, einfach std::string, oder? Aber davon haben wir gar nicht gesprochen.</p>
<p>Das Problem ist:<br />
Gibt es eine Möglichkeit folgenden Code zu verkürzen?</p>
<pre><code class="language-cpp">int array[] = {1, 2, 3};
myfunc(array);
</code></pre>
<p>Ja.<br />
Mein Vorschlag war:</p>
<pre><code class="language-cpp">myfunc( (int[3]){1, 2, 3} );
</code></pre>
<p>1. Das Problem wurde behoben: der Code ist kürzer geworden.<br />
2. Ist der Code übersichtlich genug: ja, ja und noch mal ja.<br />
3. Hätte die Ausführung des zweiten Fragments irgendwelche Laufzeitnachteile oder -vorteile gegenüber dem ersten: nein, jedenfalls sehe ich keine. Ein Array wird erzeugt, übergeben und danach zerstört. Der Unterschied ist bloß, dass im ersten Fragment ein benamter, im zweiten ein unbenamter Array erzeugt wird.</p>
<p>Das allgemeine Problem, dass man die Arraygröße bereits zur Compilerzeit wissen muss, um keine Fehler zu begehen, ist mir selbstverständlich bewußt. Dass in vielen Situationen Container die bessere Alternative zu Arrays sind, ist klar. Aber bei diesem Problem ist es nicht der Fall. Und eure kurze Sichtweise, dass man überall dort Container verwendet soll, wo es auch geht, ist falsch. C++ unterstützt viele Paradigmen. Bloß weil ihr euch nur auf eine stützt, macht aus euch keine besseren Programmierer.</p>
<p>Ich weiß nicht, was ihr jetzt noch ausdenken werdet. Jedenfalls behaupte ich nicht, dass man überall, wo es nur geht, diese unbenamte Array verwendet soll. Sondern nur dort, wo sie auch angebracht sind. Bei diesem Problem ist es der Fall gewesen.<br />
Ich bin kein &quot;eine Zeile&quot;-Freak. Ich strukturiere meinen Code so übersichtlich wie es nur geht. Bei diesem Problem benutze ich einen unbenamten Array. Und ich glaube, viele würden das auch so machen. Schließlich gibt's noch Kommentare.<br />
Wie dem auch sei, mein Vorschlag ist besser als eure.</p>
<p>Überzeugt mich, dass ich mich irre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588174</guid><dc:creator><![CDATA[user13]]></dc:creator><pubDate>Thu, 25 Sep 2008 22:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Thu, 25 Sep 2008 23:29:16 GMT]]></title><description><![CDATA[<p>Hört! Hört! Das musste (wirklich) mal gesagt werden! <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/1588180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588180</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Thu, 25 Sep 2008 23:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 06:20:35 GMT]]></title><description><![CDATA[<p>user13 schrieb:</p>
<blockquote>
<p>Und eure kurze Sichtweise, dass man überall dort Container verwendet soll, wo es auch geht, ist falsch. C++ unterstützt viele Paradigmen. Bloß weil ihr euch nur auf eine stützt, macht aus euch keine besseren Programmierer.</p>
</blockquote>
<p>Ich halte mich tatsächlich aus einen Grund als besseren Programmierer:<br />
Ich versuche Code zu schreiben der auch die nächste Wartung überstehen kann, und nicht so leicht unnötige Fehlerquellen einbaut, die man erst schwer zur Laufzeit ausmachen kann. Ich habe Compilerfehler lieber als laufzeitfehler.</p>
<pre><code class="language-cpp">// Getestet unter Visual C++ Express Edition, Servicepack 1
#include &lt;array&gt;
#include &lt;iostream&gt;

void foo(std::tr1::array&lt;int, 5&gt; const &amp; arr)
{
    for(std::tr1::array&lt;int, 5&gt;::const_iterator it=arr.begin(), end=arr.end(); it!=end; ++it)
        std::cout &lt;&lt; (*it) &lt;&lt; std::endl;
}

int main()
{
    std::tr1::array&lt;int, 5&gt; arr = {1,2,3,4,5};
    foo(arr);
}
</code></pre>
<p>Der Code ist nun etwas länger, aber wenigstens bekommt man einen Fehler, wenn man jetzt die Funktion anpasst und statt 5 nun z.B. 10 Werte benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588218</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 26 Sep 2008 06:20:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 06:59:56 GMT]]></title><description><![CDATA[<p>user13 schrieb:</p>
<blockquote>
<p>...<br />
Das allgemeine Problem, dass man die Arraygröße bereits zur Compilerzeit wissen muss, um keine Fehler zu begehen, ist mir selbstverständlich bewußt. Dass in vielen Situationen Container die bessere Alternative zu Arrays sind, ist klar. ...</p>
</blockquote>
<p>Und woher soll der geneigte Leser hier wissen, was Dir &quot;selbstverständlich&quot; und &quot;klar&quot; ist ?<br />
Du (bzw. jemand, der den jederzeit frei verfügbaren Nick &quot;user13&quot; genutzt hat) hast hier unkommentiert ein &quot;unübliches&quot; Stückchen Code in die Runde geworfen - als Antwort auf die Frage eines (vermeindlichen) Anfängers (zumindestens lässt die Syntaxfrage das vermuten).</p>
<p>=&gt; Du hast am falschen Ende gespart (oder wolltest eigentlich nur eine Diskussion über Deine Kompetenz initiieren).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588240</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 26 Sep 2008 06:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 08:58:18 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>user13 schrieb:</p>
<blockquote>
<p>...<br />
Das allgemeine Problem, dass man die Arraygröße bereits zur Compilerzeit wissen muss, um keine Fehler zu begehen, ist mir selbstverständlich bewußt. Dass in vielen Situationen Container die bessere Alternative zu Arrays sind, ist klar. ...</p>
</blockquote>
<p>Und woher soll der geneigte Leser hier wissen, was Dir &quot;selbstverständlich&quot; und &quot;klar&quot; ist ?<br />
Du (bzw. jemand, der den jederzeit frei verfügbaren Nick &quot;user13&quot; genutzt hat) hast hier unkommentiert ein &quot;unübliches&quot; Stückchen Code in die Runde geworfen - als Antwort auf die Frage eines (vermeindlichen) Anfängers (zumindestens lässt die Syntaxfrage das vermuten).</p>
<p>=&gt; Du hast am falschen Ende gespart (oder wolltest eigentlich nur eine Diskussion über Deine Kompetenz initiieren).</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Weil ja jeder anfänger mit</p>
<pre><code class="language-cpp">// Getestet unter Visual C++ Express Edition, Servicepack 1 
#include &lt;array&gt; 
#include &lt;iostream&gt; 

void foo(std::tr1::array&lt;int, 5&gt; const &amp; arr) 
{ 
    for(std::tr1::array&lt;int, 5&gt;::const_iterator it=arr.begin(), end=arr.end(); it!=end; ++it) 
        std::cout &lt;&lt; (*it) &lt;&lt; std::endl; 
} 

int main() 
{ 
    std::tr1::array&lt;int, 5&gt; arr = {1,2,3,4,5}; 
    foo(arr); 
}
</code></pre>
<p>direkt was anfangen kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588320</guid><dc:creator><![CDATA[muh]]></dc:creator><pubDate>Fri, 26 Sep 2008 08:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 09:21:10 GMT]]></title><description><![CDATA[<p>... sofern er sich ganz kurz mit der syntax der Container und ihrer Funktionen auseinandersetzt. ja ?<br />
Kann ich als Anfänger bestägigen <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/1588341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588341</guid><dc:creator><![CDATA[sust]]></dc:creator><pubDate>Fri, 26 Sep 2008 09:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 11:09:49 GMT]]></title><description><![CDATA[<p>muh schrieb:</p>
<blockquote>
<p>Weil ja jeder anfänger mit ...<br />
direkt was anfangen kann...</p>
</blockquote>
<p>Und deshalb soll man einen Anfänger also fehlerträchtigen Code vermitteln und C-Arrays verwenden, die ebenso komplex sind (Wenn man die vielen Fragen zur Zuweisung, Kopie, Übergabe etc. bedenkt kann niemand behaupten, das Arrays einfacher zu verstehen sind).</p>
<p>Ja, ich hätte den Code &quot;vereinfachen&quot; können (using namespace; Indexzugriff; Call-By-Value). Aber ich halte auch Anfänger in der Lage, Fragen zu stellen, und zeige ihnen lieber wie der Code in einer Anwendung in etwa aussehen sollte. Ich habe etwas dagegen Code zu vermitteln der<br />
a) Unnötig fehlerträchtig ist...<br />
b) ... in sauberen Anwendungen daher eh nicht eingebaut werden sollte...<br />
c) ... und damit unnötiges Wissen darstellt.<br />
Lieber liefer ich eine weitere Erläuterung nach.</p>
<p>Zum einen sehe ich dann, das der Anfänger auch wirklich Interesse hat (Nachfragen kostet nichts, außer vielleicht Zeit), und das er sich zumindestens mal mit den Code auseinander gesetzt hat (ohne fehlerträchtigen Code 1:1 in seinen Code per Copy/Paste zu übernehmen).</p>
<p>cu André<br />
P.S: Ich will garnicht behaupten das ich von Anfang an sauberen Code gelernt habe, aber dennoch kenne ich es von mir das man alte Gewohnheiten schwerer ablegt. Wieso sollte ich also gleich Gewohnheiten schaffen von denen ich weiß, das er sie später ablegen muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588391</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 26 Sep 2008 11:09:49 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 11:28:31 GMT]]></title><description><![CDATA[<p>Wie heißts so schön? &quot;Mit gutem Beispiel vorangehen&quot; - ein schlechtes Beispiel zu liefern nur weils leichter verständlich ist ist absolut der falsche Weg.<br />
Mal abgesehen davon dass die Einstellung &quot;das ist fortgeschrittenes C++, das versteht der eh nicht&quot; ganz schön arrogant ist und oft nicht der Wahrheit entspricht. Einige hier sonnen sich gerne in der Illusion, dass Neulinge in C++ auf jeden Fall unintelligenter und lernresistenter sind als sie selbst und überschätzen dabei zusätzlich ihren eigenen Wissensstand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588405</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 26 Sep 2008 11:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 12:59:32 GMT]]></title><description><![CDATA[<p>Wenn man Arrays immer per Reference übergeben würde, hätte mein viele Probleme weniger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588450</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 26 Sep 2008 12:59:32 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 13:52:09 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Wenn man Arrays immer per Reference übergeben würde, hätte mein viele Probleme weniger.</p>
</blockquote>
<p>Vor allem, weil man dann die Größe immer zur Compilezeit festlegen müsste <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>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588489</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Fri, 26 Sep 2008 13:52:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Ausdruch erzeugen on Fri, 26 Sep 2008 14:28:40 GMT]]></title><description><![CDATA[<p>Phoemuex schrieb:</p>
<blockquote>
<p>Vor allem, weil man dann die Größe immer zur Compilezeit festlegen müsste</p>
</blockquote>
<p>Compiletime ist doch immer schön.</p>
<p>Wenn alle Lib-Entwickler ihre &quot;Array-Funktionen&quot; so definieren würden, hätte wir ne Menge weniger Ärger:</p>
<pre><code class="language-cpp">template&lt;int S&gt;
void printArray( int (&amp;array)[S] )
{
    for(int i = 0; i &lt; S; ++i) cout &lt;&lt; array[i] &lt;&lt; endl;
}
</code></pre>
<p>Ohne die Referenz würde das gar nicht funktionieren.</p>
<p>Oder das ganze für alle Typen:</p>
<pre><code class="language-cpp">template&lt;typename T ,int S&gt;
void printArray( T (&amp;array)[S] )
{
    for(int i = 0; i &lt; S; ++i) cout &lt;&lt; array[i] &lt;&lt; endl;
}
</code></pre>
<p>Edit: Gibt es dieses Idiom schon, wenn nicht ist es nun das KasF-Idiom <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1588515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588515</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 26 Sep 2008 14:28:40 GMT</pubDate></item></channel></rss>