<?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[STL Datencontainer, Iteratoren und die dicken Köpfe...]]></title><description><![CDATA[<p>Möp! <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>
<p>Ich mag die STL Datencontainer wie vector und map ja echt gerne. Was mich aber immer unheimlich stört ist, dass man beim durchlaufen der Container solch dicke, aufgeblähte Schleifenköpfe hat:</p>
<pre><code>for (map&lt;boost::shared_ptr&lt;HierEine::TolleKlasse&gt;,boost::shared_ptr&lt;DortEine::TolleKlasse&gt;&gt;::const_iterator it = data-&gt;d.begin(); it!= data-&gt;d.end(); it++) {
    tuwas(*it);
}
</code></pre>
<p>Da blähen sich schon die einfachsten for-Schleifen zu unübersichtlichen Codewürsten auf. Die Übersicht leidet enorm. Und außerdem hagelts mir bei solchen Konstrukten auch ständig Kompilierfehler, weil ich mal wieder irgendwo ein Klämmerchen vergessen habe. Die Holzkammermethode ist da schon wesentlich kompakter:</p>
<pre><code>for (int i = 0; i &lt; data-&gt;d.size(); i++) {
    tuwas(data-&gt;d[i]);
}
</code></pre>
<p>Gibt es denn keine Möglichkeiten, diesen Iteratorenwahnsinn ein bisschen zu entschlacken und die Container trotzdem ordentlich zu durchlaufen? <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/197281/stl-datencontainer-iteratoren-und-die-dicken-köpfe</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 08:39:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197281.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Nov 2007 18:03:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Thu, 08 Nov 2007 18:03:17 GMT]]></title><description><![CDATA[<p>Möp! <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>
<p>Ich mag die STL Datencontainer wie vector und map ja echt gerne. Was mich aber immer unheimlich stört ist, dass man beim durchlaufen der Container solch dicke, aufgeblähte Schleifenköpfe hat:</p>
<pre><code>for (map&lt;boost::shared_ptr&lt;HierEine::TolleKlasse&gt;,boost::shared_ptr&lt;DortEine::TolleKlasse&gt;&gt;::const_iterator it = data-&gt;d.begin(); it!= data-&gt;d.end(); it++) {
    tuwas(*it);
}
</code></pre>
<p>Da blähen sich schon die einfachsten for-Schleifen zu unübersichtlichen Codewürsten auf. Die Übersicht leidet enorm. Und außerdem hagelts mir bei solchen Konstrukten auch ständig Kompilierfehler, weil ich mal wieder irgendwo ein Klämmerchen vergessen habe. Die Holzkammermethode ist da schon wesentlich kompakter:</p>
<pre><code>for (int i = 0; i &lt; data-&gt;d.size(); i++) {
    tuwas(data-&gt;d[i]);
}
</code></pre>
<p>Gibt es denn keine Möglichkeiten, diesen Iteratorenwahnsinn ein bisschen zu entschlacken und die Container trotzdem ordentlich zu durchlaufen? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1399918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399918</guid><dc:creator><![CDATA[Ajaw]]></dc:creator><pubDate>Thu, 08 Nov 2007 18:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Thu, 08 Nov 2007 18:30:11 GMT]]></title><description><![CDATA[<p>typedef? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1399928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399928</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 08 Nov 2007 18:30:11 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Thu, 08 Nov 2007 18:30:31 GMT]]></title><description><![CDATA[<p>Bastel dir doch ein <code>typedef</code> . Wobei <code>for (...) it-&gt;tuwas();</code> eigentlich eher noch nach <code>for_each</code> schreit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399929</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 08 Nov 2007 18:30:31 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 06:07:45 GMT]]></title><description><![CDATA[<p>for_each ist blöd, weil man da noch nen Funktor braucht und der Code deshalb an ganz anderer Stelle steht. (Außer man nimmt boost::lambda, dann wirds aber auch nicht grade übersichtlicher als die Schleife.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400104</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Fri, 09 Nov 2007 06:07:45 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 07:36:22 GMT]]></title><description><![CDATA[<p>Nein, man braucht nicht unbedingt einen Funktor, ein Funktor ist nur ein elegantes Werkzeug, man kann auch Funktionspointer übergeben <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/1400118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400118</guid><dc:creator><![CDATA[i_like_it]]></dc:creator><pubDate>Fri, 09 Nov 2007 07:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 08:15:22 GMT]]></title><description><![CDATA[<p>Was nichts daran änder, daß der Code woanders steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400131</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Fri, 09 Nov 2007 08:15:22 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 08:36:41 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<p>Was nichts daran änder, daß der Code woanders steht.</p>
</blockquote>
<p>Eben !<br />
Großer Vorteil von for_each() ! <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400137</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 09 Nov 2007 08:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 13:38:53 GMT]]></title><description><![CDATA[<p>Was zum Henker soll daran ein Vorteil sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400311</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Fri, 09 Nov 2007 13:38:53 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 15:15:50 GMT]]></title><description><![CDATA[<p>Das du die Funktion auch von anderen Stellen aus benutzen kannst? Das du die Implementierung unabhängig davon austauschen kannst?</p>
<p>Schon mal was von Modularität gehört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400387</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 09 Nov 2007 15:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 15:19:18 GMT]]></title><description><![CDATA[<p>&quot;Ich führe die Operation auf einem Objekt aus&quot;<br />
&quot;Ich führe die Operation auf jedem von einer Reihe von Objekten aus&quot;</p>
<p>Mit for_each lassen sich &quot;die Operation&quot; und &quot;führe auf jedem von einer Reihe von Objekten aus&quot; hervorragend trennen <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/1400391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400391</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 09 Nov 2007 15:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 15:39:02 GMT]]></title><description><![CDATA[<p>Wenn Du eh schon Boost verwendest, dann rate ich Dir zu BOOST_FOREACH:</p>
<pre><code class="language-cpp">#include &lt;boost/foreach.hpp&gt;
#define foreach BOOST_FOREACH

// …

typedef map&lt;boost::shared_ptr&lt;A&gt;, boost::shared_ptr&lt;B&gt; &gt;::const_iterator citer_t;

foreach(citer_t i, data)
    tuwas(*i);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1400407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400407</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 09 Nov 2007 15:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 16:44:45 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<p>for_each ist blöd, weil man da noch nen Funktor braucht und der Code deshalb an ganz anderer Stelle steht. (Außer man nimmt boost::lambda, dann wirds aber auch nicht grade übersichtlicher als die Schleife.)</p>
</blockquote>
<p>Ja, fast richtig. Allerdings gibt's für die Implementierung eines simplen <em>objekt-&gt;tuwas(arg)</em> viele, tolle, <em>generische</em> Bausteine.</p>
<p>Dass Boost.Lambda nicht übersichtlicher ist, möchte ich jedoch bezweifeln. Vor allem ist es <em>deutlicher</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400445</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Fri, 09 Nov 2007 16:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Fri, 09 Nov 2007 20:49:00 GMT]]></title><description><![CDATA[<p>Danke für die vielen hilfreichen Tipps. BOOST_FOREACH scheint mir für meinen Fall der geeignetste Weg zu sein. <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/1400573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400573</guid><dc:creator><![CDATA[Ajaw]]></dc:creator><pubDate>Fri, 09 Nov 2007 20:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Mon, 12 Nov 2007 07:20:29 GMT]]></title><description><![CDATA[<blockquote>
<p>Das du die Funktion auch von anderen Stellen aus benutzen kannst? Das du die Implementierung unabhängig davon austauschen kannst?</p>
</blockquote>
<p>Kommt bei mir aber extrem selten vor, daß ich Code, der in solchen Schleifen steht, irgendwo wiederverwenden kann.</p>
<blockquote>
<p>Schon mal was von Modularität gehört?</p>
</blockquote>
<p>Schon, ist aber in dem Fall unnötig, s.o.. Allein kann ich mit meiner Meinung ja nicht dastehen, sonst gäbe es ja das BOOST_FOREACH Makro ja nicht. Das paßt besser zu meinem Stil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401697</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Mon, 12 Nov 2007 07:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Mon, 12 Nov 2007 07:53:51 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<blockquote>
<p>Das du die Funktion auch von anderen Stellen aus benutzen kannst? Das du die Implementierung unabhängig davon austauschen kannst?</p>
</blockquote>
<p>Kommt bei mir aber extrem selten vor, daß ich Code, der in solchen Schleifen steht, irgendwo wiederverwenden kann.</p>
</blockquote>
<p>Hmm. Finde ich komisch, denn eigentlich lassen sich die meisten Aufgaben, die in Schleifen ausgeführt werden, recht gut auf einige Basisoperationen reduzieren, die man dann mit Map- und Filter-Operationen verknüpfen kann (wobei ein Map eine Funktion T -&gt; T ist, während ein Filter eine Funktion T -&gt; bool ist, die Elemente aussortiert). Andere Programmiersprachen (Haskell …) basieren auf dieser Annahme und sind da recht erfolgreich mit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401713</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 12 Nov 2007 07:53:51 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Mon, 12 Nov 2007 08:17:35 GMT]]></title><description><![CDATA[<p>Dann ist das der Grund warum ich mich bisher nicht mit funktionaler Programmierung anfreunden konnte. <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="🙂"
    /><br />
Aber mal im Ernst, gib mal ein wiederwendbares Beispiel an. Vielleicht lern ich ja dann noch was.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401724</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Mon, 12 Nov 2007 08:17:35 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Mon, 12 Nov 2007 17:36:48 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>(wobei ein Map eine Funktion T -&gt; T ist, während ein Filter eine Funktion T -&gt; bool ist, die Elemente aussortiert).</p>
</blockquote>
<p>Wobei das natürlich nur die Signaturen der Argumentfunktionen sind.</p>
<pre><code>map :: (\T -&gt; T), [T] -&gt; [T]

filter :: (\T -&gt; bool), [T] -&gt; [T]

foldl :: (\T, T -&gt; T), T, [T] -&gt; T
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1402023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402023</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Mon, 12 Nov 2007 17:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Mon, 12 Nov 2007 17:44:58 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<p>Dann ist das der Grund warum ich mich bisher nicht mit funktionaler Programmierung anfreunden konnte. <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="🙂"
    /><br />
Aber mal im Ernst, gib mal ein wiederwendbares Beispiel an. Vielleicht lern ich ja dann noch was.</p>
</blockquote>
<p><a href="http://www.joelonsoftware.com/items/2006/08/01.html" rel="nofollow">http://www.joelonsoftware.com/items/2006/08/01.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402028</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Mon, 12 Nov 2007 17:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Mon, 12 Nov 2007 18:26:15 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Tyrdal schrieb:</p>
<blockquote>
<p>Dann ist das der Grund warum ich mich bisher nicht mit funktionaler Programmierung anfreunden konnte. <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="🙂"
    /><br />
Aber mal im Ernst, gib mal ein wiederwendbares Beispiel an. Vielleicht lern ich ja dann noch was.</p>
</blockquote>
<p><a href="http://www.joelonsoftware.com/items/2006/08/01.html" rel="nofollow">http://www.joelonsoftware.com/items/2006/08/01.html</a></p>
</blockquote>
<p>Grmpf, vielen Dank! Ich wollte vorhin schon einen Link auf MapReduce von Google posten, aber ich wusste den genauen Namen nicht mehr (ich habe mich nur an die Haskell-Terminologie erinnert, also „reduce“ = „fold“) und habe nichts gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402048</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 12 Nov 2007 18:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 06:41:42 GMT]]></title><description><![CDATA[<blockquote>
<p>Java required you to create a whole object with a single method called a functor if you wanted to treat a function like a first class object. Combine that with the fact that many OO languages want you to create a whole file for each class, and it gets really klunky fast. If your programming language requires you to use functors, you're not getting all the benefits of a modern programming environment. See if you can get some of your money back.</p>
</blockquote>
<p>So ganz kommt die Seite also auch nicht an meinem Argument vorbei. Wobei der Hinweis auf die einfachere Parallelisierung ein echtes Argument ist. Aber das kann man ja im Bedarfsfall so machen und für den Rest BOOST_FOREACH nehmen.</p>
<p>Ansonsten danke ich für die Begegnung mit den Muppets. Ich liebe sie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402212</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Tue, 13 Nov 2007 06:41:42 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 07:19:16 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<blockquote>
<p>Java required you to create a whole object with a single method called a functor if you wanted to treat a function like a first class object. Combine that with the fact that many OO languages want you to create a whole file for each class, and it gets really klunky fast. If your programming language requires you to use functors, you're not getting all the benefits of a modern programming environment. See if you can get some of your money back.</p>
</blockquote>
<p>So ganz kommt die Seite also auch nicht an meinem Argument vorbei.</p>
</blockquote>
<p>Na ja, dafür gibt es in C++ ja Boost.Lambda und ähnliches. Nur weil es Java nicht kann, heißt es noch lange nicht, dass da andere Sprachen nicht weiter sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402225</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 13 Nov 2007 07:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 08:33:30 GMT]]></title><description><![CDATA[<p>Schon richtig, aber ich hab ja in einem vorherigen Post geschrieben, daß ich die Sache mit boost::Lambda nicht übersichtlicher find. Und außer für Parallelisierung seh ich da jetzt auf der Seite keinen Vorteil, der die schlechtere Lesbarkeit (in C++)rechtfertigen würde. Naja ist wohl Geschmackssache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402273</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Tue, 13 Nov 2007 08:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 13:42:47 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a>, Konrad Rudolph<br />
Also irgendwie verstehe ich euren Punkt nicht. Klar, map/reduce-Konstrukte sind Hammer (sehe ich auch so), aber was hat das mit dem wirklich nervigen &quot;Code woanders hin schreiben müssen&quot; zu tun? Wer map/reduce kann, kann normalerweise auch anonyme Funktionen und deshalb schreibt man i.d.R. (so wie auch Joel in seinem Artikel):</p>
<pre><code class="language-cpp">map( function(x){x.print();}, a );
</code></pre>
<p>statt</p>
<pre><code class="language-cpp">// irgendwo an einer völlig anderen Stelle
struct PrintAdapter {
   template&lt;class T&gt;
   void operator()(const T&amp; x) const {
     x.print();
   }
};
// und dann wiederum an einer anderen Stelle
map( PrintAdapter(), a );
</code></pre>
<p>Die Frage: &quot;Wo bitte ist der Vorteil, dass der Code woanders steht?&quot; bleibt imo völlig berechtigt und hat nichts mit map/foreach/... vs. for-Schleifen zu tun. Anders: for-Schleifen sind nicht deshalb mist weil der Code, der pro Iteration ausgeführt wird im Body der Schleife steht, sondern weil das Iterieren nicht abstrahiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402492</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Tue, 13 Nov 2007 13:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 13:58:19 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Die Frage: &quot;Wo bitte ist der Vorteil, dass der Code woanders steht?&quot; bleibt imo völlig berechtigt und hat nichts mit map/foreach/... vs. for-Schleifen zu tun.</p>
</blockquote>
<p>Du vergisst, dass *ich* derjenige war, der BOOST_FOREACH in diesem Thread vorschlug. Ich bin auf Deiner Seite, Du musst mich nicht überzeugen. Trotzdem sind auch die in der Schleife vollführten Operationen oft dieselben, parametrisierbaren Algorithmen (z.B. beim Filtern ein less_than-Vergleich oder beim Aufeinanderfalten (Reduzieren) eine einfache Addition), und in solchen Fällen lohnt es sich eben, wiederverwendbare Funktoren zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402505</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 13 Nov 2007 13:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 14:33:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph<br />
Ok. Dann habe ich da wohl was mißverstanden.<br />
Wie auch immer:</p>
<blockquote>
<p>Trotzdem sind auch die in der Schleife vollführten Operationen oft dieselben, parametrisierbaren Algorithmen (z.B. beim Filtern ein less_than-Vergleich oder beim Aufeinanderfalten (Reduzieren) eine einfache Addition), und in solchen Fällen lohnt es sich eben, wiederverwendbare Funktoren zu schreiben.</p>
</blockquote>
<p>Es lohnt sich eine Abstraktion (Funktion) für &quot;Filtern&quot; und &quot;Aufeinanderfalten&quot; zu schreiben. Da stimme ich zu und deshalb bin ich ja auch ein großer Freund von einfachen Standardalgos wie std::for_each oder std::accumulate. Es lohnt sich aber imo keinesfalls eine Funktion für &quot;less_than&quot;-Vergleich oder &quot;einfache Addition&quot; zu schreiben und deshalb mag ich ja auch die einfachen Standardalgos wie std::for_each und std::accumulate nicht (der Widerspruch ist beabsichtigt). Denn ohne boost::lambda o.Ä. schreibt man ständig irgendwelche völlig trivialen Funktoren oder aber unglaublich generische, die dann über 5 Binder zusammengeschustert werden und damit am Ende nur eins produzieren: Unverständnis beim Leser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402533</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Tue, 13 Nov 2007 14:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to STL Datencontainer, Iteratoren und die dicken Köpfe... on Tue, 13 Nov 2007 15:11:15 GMT]]></title><description><![CDATA[<p>Dann hoffen wir mal, daß mit C++0x(09?!) und den &quot;Variadic Templates&quot; das bind-Template dann übersichtlicher und einfacher zu verwenden sein wird. Und Lambda-Funktionalität soll ja auch angeboten werden (die Platzhalter _1, _2, _3, ... sollen dafür wohl genutzt werden können).<br />
Obwohl ich selber ein Anhänger der &quot;Funktionalen Programmierung&quot; bin, verwende ich die vordefinierten Standard-Algos bisher leider weitaus weniger (als ich es eigentlich sollte -) - so wie HumeSikkins es ja auch geschrieben hat.<br />
Umgekehrt hasse ich aber auch immer die selbstgeschriebenen Schleifen...</p>
<p>C++ ist halt eine wunderbare Multiparadigmen-Sprache -)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1402557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1402557</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 13 Nov 2007 15:11:15 GMT</pubDate></item></channel></rss>