<?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[Wie iteriert man am besten über einen vector]]></title><description><![CDATA[<p>Hi,</p>
<p>sagen wir ich habe einen vector&lt;Foo&gt; und will über alle Elemente iterieren. Wie mach ich das am effiziensten?</p>
<pre><code class="language-cpp">// A) Mit Iteratoren
vector&lt;Foo&gt;::iterator it = myVec.begin();
vector&lt;Foo&gt;::iterator itEnd = myVec.end();
for(; it != itEnd; ++it) {
    int val = it-&gt;member;
    int val2 = it-&gt;member2;
    ...
}

// B) Mit operator[]
for(int i; i &lt; myVec.size(); i++) {
    int val  = myVec[i].member;
    int val2 = myVec[i].member2;
    ...
}

// C) Einmal const Referenz holen, damit man nur einmal operator[] aufruft:
for(int i; i &lt; myVec.size(); i++) {
    const Foo&amp; foo = myVec[i];
    int val  = foo.member;
    int val2 = foo.member2;
    ...
}
</code></pre>
<p>Ist eine der Varianten am besten/effizientesten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290004/wie-iteriert-man-am-besten-über-einen-vector</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 18:47:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290004.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Jul 2011 14:54:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 14:54:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>sagen wir ich habe einen vector&lt;Foo&gt; und will über alle Elemente iterieren. Wie mach ich das am effiziensten?</p>
<pre><code class="language-cpp">// A) Mit Iteratoren
vector&lt;Foo&gt;::iterator it = myVec.begin();
vector&lt;Foo&gt;::iterator itEnd = myVec.end();
for(; it != itEnd; ++it) {
    int val = it-&gt;member;
    int val2 = it-&gt;member2;
    ...
}

// B) Mit operator[]
for(int i; i &lt; myVec.size(); i++) {
    int val  = myVec[i].member;
    int val2 = myVec[i].member2;
    ...
}

// C) Einmal const Referenz holen, damit man nur einmal operator[] aufruft:
for(int i; i &lt; myVec.size(); i++) {
    const Foo&amp; foo = myVec[i];
    int val  = foo.member;
    int val2 = foo.member2;
    ...
}
</code></pre>
<p>Ist eine der Varianten am besten/effizientesten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093892</guid><dc:creator><![CDATA[FragaK]]></dc:creator><pubDate>Sun, 17 Jul 2011 14:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:01:07 GMT]]></title><description><![CDATA[<p>Mit Optimierungen spielt es keine Rolle mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093894</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:01:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:27:57 GMT]]></title><description><![CDATA[<p>Laut C++-Referenz sind sind die Komplexitäten der beiden Versionen, ob <code>Iterator</code> oder <code>operator[]</code> Konstant, das heißt es ist völlig Wurst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093901</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:35:58 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Laut C++-Referenz sind sind die Komplexitäten der beiden Versionen, ob <code>Iterator</code> oder <code>operator[]</code> Konstant, das heißt es ist völlig Wurst.</p>
</blockquote>
<p>Das hilft leider nicht in der Praxis. vector::at() hat auch konstante Laufzeit, ist aber trotzdem langsamer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093905</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:37:36 GMT]]></title><description><![CDATA[<p>Schade, ich dachte man könnte sich auf die Qualität in der Referenz verlassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093906</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:41:12 GMT]]></title><description><![CDATA[<p>Das hat doch nichts mit Qualität zu tun <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Komplexitäten sind korrekt, aber sie sagen nur etwas über das asymptotische Verhalten bei sehr vielen Zugriffen aus. Konstanten werden dabei vernachlässigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093908</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:56:27 GMT]]></title><description><![CDATA[<p>Richtig. Drum sind die asympt. Laufzeiten sehr mit Vorsicht zu genießen. In der Praxis kann ein Algorithmus mit O(n^2) schneller sein als einer mit O(logn).</p>
<p>Hab mich jetzt für Version C) entschieden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093911</guid><dc:creator><![CDATA[FragaK]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:58:11 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Das hat doch nichts mit Qualität zu tun <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Komplexitäten sind korrekt, aber sie sagen nur etwas über das asymptotische Verhalten bei sehr vielen Zugriffen aus. Konstanten werden dabei vernachlässigt.</p>
</blockquote>
<p>das ist ja auch der grund warum mergesort(O(n*log n)) in der praxis langsamer ist als quicksort(O(n*log n) bzw O(n²), die zusätzlichen konstanten machens in dem fall langsamer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093912</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 15:58:26 GMT]]></title><description><![CDATA[<p>Warum probierst du es nicht einfach mal aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093913</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 17 Jul 2011 15:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 17:09:47 GMT]]></title><description><![CDATA[<p>FragaK schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Mit den Iteratoren kann man wenig verkehrt machen, nach den Optimierungen wird da nur ein roher Zeiger dereferenziert und inkrementiert. Seit <code>auto</code> aus C++0x ist die Deklaration auch nicht mehr so häßlich und zusätzlich kann man den darunterliegenden Container leichter austauschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093938</guid><dc:creator><![CDATA[fdfdg]]></dc:creator><pubDate>Sun, 17 Jul 2011 17:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 17:13:48 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Das hat doch nichts mit Qualität zu tun <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Komplexitäten sind korrekt, aber sie sagen nur etwas über das asymptotische Verhalten bei sehr vielen Zugriffen aus. Konstanten werden dabei vernachlässigt.</p>
</blockquote>
<p>das ist ja auch der grund warum mergesort(O(n*log n)) in der praxis langsamer ist als quicksort(O(n*log n) bzw O(n²), die zusätzlichen konstanten machens in dem fall langsamer</p>
</blockquote>
<p>Dann musst du aber auch dazusagen, dass dies speziell für Speichermedien gilt die konstante Random-Access-Zugriffszeiten bieten. Rein serielle Speichermedien arbeiten viel lieber mit Mergesort.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093940</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sun, 17 Jul 2011 17:13:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 17:30:34 GMT]]></title><description><![CDATA[<p>BOOST_FOREACH( Foo foo, myVec )<br />
{<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093959</guid><dc:creator><![CDATA[boostyouup]]></dc:creator><pubDate>Sun, 17 Jul 2011 17:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 21:22:22 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Das hat doch nichts mit Qualität zu tun <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Komplexitäten sind korrekt, aber sie sagen nur etwas über das asymptotische Verhalten bei sehr vielen Zugriffen aus. Konstanten werden dabei vernachlässigt.</p>
</blockquote>
<p>das ist ja auch der grund warum mergesort(O(n*log n)) in der praxis langsamer ist als quicksort(O(n*log n) bzw O(n²), die zusätzlichen konstanten machens in dem fall langsamer</p>
</blockquote>
<p>Dann musst du aber auch dazusagen, dass dies speziell für Speichermedien gilt die konstante Random-Access-Zugriffszeiten bieten. Rein serielle Speichermedien arbeiten viel lieber mit Mergesort.</p>
<p>MfG SideWinder</p>
</blockquote>
<p>Ich habe mal versucht, jedes Element in einer std::list einen Zeiger zu holen und in einen vector zu werfen, und dann mit nem indirect_iterator und std::sort zu sortieren. War schneller als Mergesort. <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/2094054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094054</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 17 Jul 2011 21:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 21:51:16 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>SideWinder schrieb:</p>
<blockquote>
<p>Dann musst du aber auch dazusagen, dass dies speziell für Speichermedien gilt die konstante Random-Access-Zugriffszeiten bieten. Rein serielle Speichermedien arbeiten viel lieber mit Mergesort.</p>
<p>MfG SideWinder</p>
</blockquote>
<p>Ich habe mal versucht, jedes Element in einer std::list einen Zeiger zu holen und in einen vector zu werfen, und dann mit nem indirect_iterator und std::sort zu sortieren. War schneller als Mergesort. <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>
</blockquote>
<p>Und? Das bestätigt SideWinder doch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094061</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 17 Jul 2011 21:51:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Sun, 17 Jul 2011 22:16:38 GMT]]></title><description><![CDATA[<p>@boostyouup<br />
wenn dann:</p>
<pre><code class="language-cpp">BOOST_FOREACH( Foo &amp; f, fooVec ) ...
//bzw.
BOOST_FOREACH( const  &amp; f, fooVec ) ...
</code></pre>
<p>@Performenztests:<br />
Derartige sind mit äußerster Vorsicht zu genießen, da sie sehr von den durchgeführten Compileroptimierungen abhängen. Generell ist das Verwenden von Iteratoren zu bevorzugen. Wobei ich bei vectoren aus alter Gewohnheit meist den Indexoperator verwende...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094070</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Sun, 17 Jul 2011 22:16:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 07:06:41 GMT]]></title><description><![CDATA[<p>FragaK schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>sagen wir ich habe einen vector&lt;Foo&gt; und will über alle Elemente iterieren. Wie mach ich das am effiziensten?</p>
<pre><code class="language-cpp">// A) Mit Iteratoren
vector&lt;Foo&gt;::iterator it = myVec.begin();
vector&lt;Foo&gt;::iterator itEnd = myVec.end();
for(; it != itEnd; ++it) {
    int val = it-&gt;member;
    int val2 = it-&gt;member2;
    ...
}

// B) Mit operator[]
for(int i; i &lt; myVec.size(); i++) {
    int val  = myVec[i].member;
    int val2 = myVec[i].member2;
    ...
}

// C) Einmal const Referenz holen, damit man nur einmal operator[] aufruft:
for(int i; i &lt; myVec.size(); i++) {
    const Foo&amp; foo = myVec[i];
    int val  = foo.member;
    int val2 = foo.member2;
    ...
}
</code></pre>
<p>Ist eine der Varianten am besten/effizientesten?</p>
</blockquote>
<p>Ist das Absicht, dass du in Variante <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> und C) die Laufvariable i nicht initialisierst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094102</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 18 Jul 2011 07:06:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 07:08:07 GMT]]></title><description><![CDATA[<p>das gesamte thema hatten wir aber schon ein paar mal</p>
<p>im prinzip kannst du sagen per index und per iterator ist gleich schnell. das würde ich schon premature optimizing nennen wenn du da was dran drehen willst.</p>
<p>mach dir lieber sorgen um die richtigen performancefresser (wie z.b. schlechte algorithmen, oder container falsch eingesetzt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094103</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 18 Jul 2011 07:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 07:11:16 GMT]]></title><description><![CDATA[<p>FragaK schrieb:</p>
<blockquote>
<p>Hi,<br />
sagen wir ich habe einen vector&lt;Foo&gt; und will über alle Elemente iterieren. Wie mach ich das am effiziensten?<br />
[/cpp]<br />
Ist eine der Varianten am besten/effizientesten?</p>
</blockquote>
<p>Ich persönlich bevorzuge die letzte Variante, wobei ich (wenn ich schon auf Laufzeit achte), val und val2 ausserhalb des for-scopes deklariere.</p>
<p>Ein guter Compiler sollte sowas aber von sich aus optimieren. Bei komplexen Datenstrukturen sieht das idR schon anders aus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094105</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Mon, 18 Jul 2011 07:11:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 07:27:22 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>@boostyouup<br />
wenn dann:</p>
<pre><code class="language-cpp">BOOST_FOREACH( Foo &amp; f, fooVec ) ...
//bzw.
BOOST_FOREACH( const  &amp; f, fooVec ) ...
</code></pre>
</blockquote>
<p>Oder mit C++0x, sobald es die Compiler unterstützen:</p>
<pre><code class="language-cpp">for (Foo&amp; f : fooVec)
</code></pre>
<p>Und vorher kann man sich ein <code>foreach</code> -Makro mit <code>auto</code> basteln.</p>
<p>muffmolch schrieb:</p>
<blockquote>
<p>Ich persönlich bevorzuge die letzte Variante, wobei ich (wenn ich schon auf Laufzeit achte), val und val2 ausserhalb des for-scopes deklariere.</p>
</blockquote>
<p>Wenn du schon auf die Laufzeit achtest, kannst du es gleich richtig machen. Die Annahme, nicht-lokale Definitionen seien schneller, stimmt so verallgemeinert nicht. Siehe <a href="http://www.c-plusplus.net/forum/p2076998#2076998" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094113</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 18 Jul 2011 07:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 07:43:31 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wenn du schon auf die Laufzeit achtest, kannst du es gleich richtig machen. Die Annahme, nicht-lokale Definitionen seien schneller, stimmt so verallgemeinert nicht. Siehe <a href="http://www.c-plusplus.net/forum/p2076998#2076998" rel="nofollow">hier</a>.</p>
</blockquote>
<p>Da gebe ich dir recht, aber bei unserem Strömungssimulator hat es nunmal in Summe ~10% Leistung ausgemacht. Dabei handelte es sich größtenteils um double-Werte, die in vectoren gespeichert wurden. Sowas ist natürlich stark compilerabhängig (was ich auch erwähnte). Beim gcc 4.3 brachte es eben knapp 10%, beim icc 10.x hingegen war der Leistungsunterschied vernachlässigbar. Bei der Optimierung war kein Unterschied zwischen O2 und O3 messbar. Daher gilt für mich immer: laufzeitkritische Abschnitte immer manuell optimieren. Zudem hängt es auch stark davon ab, welcher Code letztlich im Scope ausgeführt wird. Meistens sollte man sich mehr Gedanken um diesen Code machen als um die Art der Vectoriteration, die meist nicht von Belang ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094119</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Mon, 18 Jul 2011 07:43:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 08:18:45 GMT]]></title><description><![CDATA[<p>Speicherzugriffsmuster sind da wichtiger als &quot;wie iteriere ich über einen vector&quot;-Fragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094127</guid><dc:creator><![CDATA[aber_]]></dc:creator><pubDate>Mon, 18 Jul 2011 08:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 16:10:10 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>muffmolch schrieb:</p>
<blockquote>
<p>@boostyouup<br />
wenn dann:</p>
<pre><code class="language-cpp">BOOST_FOREACH( Foo &amp; f, fooVec ) ...
//bzw.
BOOST_FOREACH( const  &amp; f, fooVec ) ...
</code></pre>
</blockquote>
<p>Oder mit C++0x, sobald es die Compiler unterstützen:</p>
<pre><code class="language-cpp">for (Foo&amp; f : fooVec)
</code></pre>
<p>Und vorher kann man sich ein <code>foreach</code> -Makro mit <code>auto</code> basteln.</p>
</blockquote>
<p>Ein foreach-Makro wie BOOST_FOREACH.<br />
Wozu sollte man sich sowas selbst basteln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094367</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 18 Jul 2011 16:10:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wie iteriert man am besten über einen vector on Mon, 18 Jul 2011 16:23:23 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Ein foreach-Makro wie BOOST_FOREACH.<br />
Wozu sollte man sich sowas selbst basteln?</p>
</blockquote>
<p>Z.B. weil man Boost nicht benutzen kann. Oder weil einem &quot;the performance of BOOST_FOREACH is usually within a few percent of the equivalent hand-coded loop&quot; nicht passt. Oder weil man die Compiletime-Dependencies von <code>&lt;boost/foreach.hpp&gt;</code> (unter Anderem Range, TypeTraits, MPL) unverhältnismässig findet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094372</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 18 Jul 2011 16:23:23 GMT</pubDate></item></channel></rss>