<?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[std::vector füllen: Ist das &amp;quot;legal&amp;quot;?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bin soeben in einem Buch über folgendes Codebeispiel gestoßen:</p>
<pre><code>vector&lt;int&gt; v;
for (int i; cin &gt;&gt; i; / * no expression* / )
    v.push_back(i);
</code></pre>
<p>Könnte man hier nicht einfach direkt sowas machen? Und wenn ja, hat jemand eine Idee, weshalb das nicht so vom Autor dargestellt wurde?</p>
<pre><code>vector&lt;int&gt; v;
for (int i; cin &gt;&gt; i; v.push_back(i));
</code></pre>
<p>Ist übrigens ernst gemeint.</p>
<p>LG<br />
HarteWare</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333948/std-vector-füllen-ist-das-quot-legal-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 08:58:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333948.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Aug 2015 19:07:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Wed, 12 Aug 2015 19:07:26 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bin soeben in einem Buch über folgendes Codebeispiel gestoßen:</p>
<pre><code>vector&lt;int&gt; v;
for (int i; cin &gt;&gt; i; / * no expression* / )
    v.push_back(i);
</code></pre>
<p>Könnte man hier nicht einfach direkt sowas machen? Und wenn ja, hat jemand eine Idee, weshalb das nicht so vom Autor dargestellt wurde?</p>
<pre><code>vector&lt;int&gt; v;
for (int i; cin &gt;&gt; i; v.push_back(i));
</code></pre>
<p>Ist übrigens ernst gemeint.</p>
<p>LG<br />
HarteWare</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463614</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Wed, 12 Aug 2015 19:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Wed, 12 Aug 2015 19:15:37 GMT]]></title><description><![CDATA[<p>Klar, ist nur die Frage wie lesbar man es gerne hätte. In dem Fall ist es wahrscheinlich okay, auch wenn mir da viele widersprechen werden. Für komplexere Sachen sollte man die for-Syntax allerdings nicht mißbrauchen. Das Problem ist, dass 90% der Programmierer nicht wissen, dass man for auch für was anderes als for(int i=0; i&lt;n; ++i) verwenden kann. Die stellt man mit solchen Konstrukten vor die Herausforderung erstmal zu verstehen was in dieser unschuldigen Zeile abgeht. Kommt im Team nicht gut an sowas, wenn man die Leute mit kreativem Einsatz von Sprachkonstrukten ausbremst :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463615</guid><dc:creator><![CDATA[goi]]></dc:creator><pubDate>Wed, 12 Aug 2015 19:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Wed, 12 Aug 2015 19:09:05 GMT]]></title><description><![CDATA[<p>Weils kein Weiterschaltungsausdruck ist und deshalb nicht an dessen Platz gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463616</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 12 Aug 2015 19:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Wed, 12 Aug 2015 19:14:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">vector&lt;int&gt; v;
copy(istream_iterator&lt;int&gt;(cin), {}, back_inserter(v));
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463617</guid><dc:creator><![CDATA[istreamschmistream]]></dc:creator><pubDate>Wed, 12 Aug 2015 19:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Wed, 12 Aug 2015 20:23:22 GMT]]></title><description><![CDATA[<p>C++/C bietet inzwischen eine große Vielfalt an. Multikulti eben. <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="😃"
    /><br />
Einfach dran gewöhnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463623</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Wed, 12 Aug 2015 20:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Thu, 13 Aug 2015 08:54:08 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>[...]Könnte man hier nicht einfach direkt sowas machen? [...]</p>
</blockquote>
<p>Ein Grundsatz: <strong>Don't be fancy.</strong></p>
<p>Der Schleifenkörper mit in der Schleifensteuerung optimiert den Code um genau 0, aber es bremst tatsächlich das Lesetempo auch erfahrener Leute, weil man im Allgemeinen etwas Anderes erwartet. Zumindest stolpert man kurz und fragt sich, warum das so ist, bis man drauf kommt, dass es eigentlich keinen Vorteil hat und der Programmierer nur &quot;clever&quot; sein wollte. Die Zeiten, wo man ein paar Bytes im <em>Sourcecode</em> einsparen musste, sind schon lange vorbei. Lesbarkeit, oder besser: schnelle Erfassbarkeit <em>durch</em> Verwendung von Standards ist das A und O. Clever und kreativ kann man an ganz anderer Stelle sein!</p>
<p>Der Buchautor hat <em>das</em> zumindest richtig gemacht, indem er durch seinen Kommentar explizit ausdrückt, dass diese Schleife keine Weiterschaltung hat und diese auch nicht vergessen wurde.</p>
<p>Das Problem liegt an anderer Stelle: allein die Tatsache, dass er hier einen Kommentar braucht, um etwas zu erklären, was man bei anderer Formulierung vermeiden könnte, zeigt, dass da schon was nicht stimmt: Ich bin der Meinung, dass da <em>überhaupt</em> keine <code>for</code> -Schleife hingehört, denn ein <code>for</code> impliziert immer eine Laufvariable oder einen Iterator, der weitergeschaltet wird. Hier wird die &quot;Laufvariable&quot; aber als Datenpuffer missbraucht. Das kann ein <code>while</code> besser, weil es genau das sagt: SOLANGE eine Eingabe kommt...</p>
<p>~edit: Kommentar zum Kommentar an sich~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463624</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Thu, 13 Aug 2015 08:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Thu, 13 Aug 2015 09:22:11 GMT]]></title><description><![CDATA[<p>Hallo und vielen Dank für Eure zahlreichen Antworten.</p>
<p>Ich bin überzeugt: KISS<br />
<em>(Keep It Simple Stupid)</em></p>
<p>Es war ja bestimmt nicht dafür vorgesehen, ich kann mir vorstellen, dass solche &quot;hacks&quot; tatsächlich das Ganze unleserlich machen. Vermutlich lässt sich das selbe auch für die ganzen Varianten mit copy sagen.</p>
<p>LG<br />
HarteWare</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463660</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Thu, 13 Aug 2015 09:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Thu, 13 Aug 2015 10:13:01 GMT]]></title><description><![CDATA[<p>Jo, frei nach Focus: &quot;Immer an die Leser denken&quot;</p>
<p>Irgendwo schwirrt die Faustformel, dass Code etwa 10x mehr gelesen als geschrieben wird, und zwar auch von anderen Leuten und Jahre später.</p>
<p>Stellt dir einen Maintenance-Programmierer vor, der den Code pflegt oder einen Fehler sucht. Da kommt es schon darauf an, den Sinn schnell zu erfassen. Ist wie beim Buchlesen: man liest ja auch nicht jeden einzelnen Buchstaben, sondern erfasst ganze Wörter oder sogar Satzteile als Ganzes. In sofern ist es mMn schon wichtig, die <em>Intention</em> des Codes so klar wie möglich auszudrücken. Ein <code>for</code> signalisiert ggf. schon genug, so dass der Leser den Rest vielleicht gar nicht mehr groß weiterlesen muss, bzw. Fehler sofort auffallen. Blöd, wenn es dann doch etwas anderes tut.</p>
<p>Letztlich geht es immer um fehlerfreien Code (und Zeit...), und je besser man diesen lesen kann, desto geringer die Chance, etwas zu übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463666</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Thu, 13 Aug 2015 10:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector füllen: Ist das &amp;quot;legal&amp;quot;? on Thu, 13 Aug 2015 10:22:19 GMT]]></title><description><![CDATA[<p>minastaros schrieb:</p>
<blockquote>
<p>Ein Grundsatz: <strong>Don't be fancy.</strong></p>
</blockquote>
<p>QFT</p>
<p>Und sonst ist dem nicht hinzuzufuegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2463670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2463670</guid><dc:creator><![CDATA[TGGC]]></dc:creator><pubDate>Thu, 13 Aug 2015 10:22:19 GMT</pubDate></item></channel></rss>