<?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[Range-based-for oder Iterator?]]></title><description><![CDATA[<p>Angenommen ich habe einen Vector...</p>
<pre><code>std::vector&lt;int&gt; sampleData = { 1, 2, 3, 4, 5 };
</code></pre>
<p>Für welche der folgenden Varianten sollte ich mich entscheiden?</p>
<p>Variante 1:</p>
<pre><code>for (auto&amp; element : sampleData)
{
	// Do something with element
}
</code></pre>
<p>Variante 2:</p>
<pre><code>for (auto&amp; element = sampleData.begin(); element != sampleData.end(); ++element)
{
	// Do something with *element
}
</code></pre>
<p>Welche Variante hat ihre Vor- und Nachteile? Oder ist es einfach Geschmackssache?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322114/range-based-for-oder-iterator</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 11:42:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322114.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Dec 2013 11:40:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Sat, 07 Dec 2013 11:40:55 GMT]]></title><description><![CDATA[<p>Angenommen ich habe einen Vector...</p>
<pre><code>std::vector&lt;int&gt; sampleData = { 1, 2, 3, 4, 5 };
</code></pre>
<p>Für welche der folgenden Varianten sollte ich mich entscheiden?</p>
<p>Variante 1:</p>
<pre><code>for (auto&amp; element : sampleData)
{
	// Do something with element
}
</code></pre>
<p>Variante 2:</p>
<pre><code>for (auto&amp; element = sampleData.begin(); element != sampleData.end(); ++element)
{
	// Do something with *element
}
</code></pre>
<p>Welche Variante hat ihre Vor- und Nachteile? Oder ist es einfach Geschmackssache?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370370</guid><dc:creator><![CDATA[würdeichgernwissen]]></dc:creator><pubDate>Sat, 07 Dec 2013 11:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Sat, 07 Dec 2013 11:47:43 GMT]]></title><description><![CDATA[<p>Iteratoren wuerde ich nur nehmen, wenn ich sie innerhalb der Schleife brauche, z.B. um ein Element zu loeschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370373</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sat, 07 Dec 2013 11:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Sat, 07 Dec 2013 12:01:28 GMT]]></title><description><![CDATA[<p>Denke immer dran, dass es auch transform, copy, accumulate etc. gibt. Je nach Schleifeninhalt lieber ein Lambda verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370378</guid><dc:creator><![CDATA[std__algorithm]]></dc:creator><pubDate>Sat, 07 Dec 2013 12:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Sat, 07 Dec 2013 14:15:39 GMT]]></title><description><![CDATA[<p>Die beiden Funktionen sind fast identisch.<br />
Variante 1 ist übersichtlicher und in manchen Fällen vielleicht sogar ein bisschen schneller, dafür hast du keinen Zugriff auf die iteratoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370393</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Sat, 07 Dec 2013 14:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Sat, 07 Dec 2013 14:16:02 GMT]]></title><description><![CDATA[<p>So einfach wie möglich. Wenn du für alle Elemente etwas tust und keinen Zugriff auf den Iterator brauchst, nimm Range-Based For. Ist möglicherweise auch schneller als eine Iteratoren-Schleife, da <code>end()</code> garantiert nicht mehr als einmal aufgerufen wird.</p>
<p>In deinem zweiten Beispielcode sollte übrigens <code>auto</code> statt <code>auto&amp;</code> stehen, du kannst keine Non-Const-LValue-Referenzen an RValues binden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370394</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 07 Dec 2013 14:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 08:47:33 GMT]]></title><description><![CDATA[<blockquote>
<p>du kannst keine Non-Const-LValue-Referenzen an RValues binden</p>
</blockquote>
<p>Doch, ist eine Spezialitaet von VS.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370668</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 09 Dec 2013 08:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 09:30:15 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ist möglicherweise auch schneller als eine Iteratoren-Schleife, da <code>end()</code> garantiert nicht mehr als einmal aufgerufen wird.</p>
</blockquote>
<p>Die Aussage ist mir nicht ganz klar, was meinst du damit?</p>
<p>Die Pruefung gegen .end muss doch bei jedem Element erfolgen oder meinst du, dass er sich den Wert von .end nur einmal holt und sich dann merkt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370673</guid><dc:creator><![CDATA[Ruvi++]]></dc:creator><pubDate>Mon, 09 Dec 2013 09:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 09:32:26 GMT]]></title><description><![CDATA[<p>letzteres</p>
<p>Für die Iterator-Schreibweise muss der Compiler erstmal beweisen, dass end() während der Schleife konstant ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370674</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Mon, 09 Dec 2013 09:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 09:50:06 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>letzteres</p>
<p>Für die Iterator-Schreibweise muss der Compiler erstmal beweisen, dass end() während der Schleife konstant ist.</p>
</blockquote>
<p>Entschuldige die erneute Nachfrage aber ich moechte es komplett verstehen.</p>
<p>Warum muss der compiler beweisen, das .end() konstant ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370676</guid><dc:creator><![CDATA[Ruvi++]]></dc:creator><pubDate>Mon, 09 Dec 2013 09:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 09:51:09 GMT]]></title><description><![CDATA[<p>Ah, weil der compiler nicht ausschliessen kann, dass waehrend der for loop etwas in den Vector gepushed wird, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370677</guid><dc:creator><![CDATA[Ruvi++]]></dc:creator><pubDate>Mon, 09 Dec 2013 09:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 10:02:15 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/320361" rel="nofollow">http://www.c-plusplus.net/forum/320361</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370678</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 09 Dec 2013 10:02:15 GMT</pubDate></item><item><title><![CDATA[Reply to Range-based-for oder Iterator? on Mon, 09 Dec 2013 10:04:16 GMT]]></title><description><![CDATA[<p>Ja, auch wenn ich es nicht so ausdrücken würde. Der Compiler wird wahrscheinlich nicht danach schauen, ob da ein &quot;push_back&quot;-Aufruf stattfindet... das wäre irgendwie viel zu speziell. Der wird sich den Zustand des Objekts anschauen, von dem end() abhängt und dann schauen, ob sich dieser Zustand über die Ausdrücke in den Schleifendurchläufen verändern kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370679</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Mon, 09 Dec 2013 10:04:16 GMT</pubDate></item></channel></rss>