<?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[for_each]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgendes Problem:</p>
<pre><code class="language-cpp">void save(std::string str) {
  out &lt;&lt; str &lt;&lt; &quot;\n&quot;; //out ist global
}

for_each(result.begin(), result.end(), save);
</code></pre>
<p>Der ofstream in save ist bis jetzt global, da ich es nicht schaffe, diesen als Parameter der Funktion save zu übergeben. Wie funktioniert das im neuen C++ Standard?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322507/for_each</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 21:37:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322507.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Dec 2013 13:24:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 13:24:16 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgendes Problem:</p>
<pre><code class="language-cpp">void save(std::string str) {
  out &lt;&lt; str &lt;&lt; &quot;\n&quot;; //out ist global
}

for_each(result.begin(), result.end(), save);
</code></pre>
<p>Der ofstream in save ist bis jetzt global, da ich es nicht schaffe, diesen als Parameter der Funktion save zu übergeben. Wie funktioniert das im neuen C++ Standard?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373528</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:24:16 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 13:31:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(const auto&amp; str : result) save( str, out );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2373531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373531</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 13:45:52 GMT]]></title><description><![CDATA[<p>Alternativ mit einem Lambda.<br />
Oder in dem man den ostream-Operator überlädt und in den ostream_iterator rüberkopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373532</guid><dc:creator><![CDATA[lamm da!]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:45:52 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 13:50:12 GMT]]></title><description><![CDATA[<p>Oder im C++03 Standard kann man es so machen</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;

struct functor
{
	functor(std::ostream&amp; os) : ostream(os) {}

	void operator ()(std::string const&amp; str)
	{
		ostream &lt;&lt; str &lt;&lt; '\n';
	}

	std::ostream&amp; ostream;
};

int main()
{
	std::vector&lt;std::string&gt; result(5);
	result[0] = &quot;string1&quot;;
	result[1] = &quot;string2&quot;;
	result[2] = &quot;string3&quot;;
	result[3] = &quot;string4&quot;;
	result[4] = &quot;string5&quot;;

	std::for_each(result.begin(), result.end(), functor(std::cout));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2373533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373533</guid><dc:creator><![CDATA[Flashput]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 13:59:34 GMT]]></title><description><![CDATA[<p>Um noch mehr Möglichkeiten aufzuzeigen:</p>
<pre><code>void save(const std::string&amp; str, std::ostream&amp; out)
{
    out &lt;&lt; str &lt;&lt; &quot;\n&quot;;
}

std::ofstream file(...);
std::for_each(result.begin(), result.end(), std::bind(&amp;save, _1, std::ref(file)));
</code></pre>
<p>Benötigt <code>using namespace std::placeholders;</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373535</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 14:04:33 GMT]]></title><description><![CDATA[<p>Flashput schrieb:</p>
<blockquote>
<p>struct functor</p>
</blockquote>
<p>Functors-Codebloat sollten wir mal vergraben, vor Scham niemals wieder verwenden oder darüber sprechen.</p>
<p>lamm da! schrieb:</p>
<blockquote>
<p>Alternativ mit einem Lambda.</p>
</blockquote>
<pre><code>#include &lt;iostream&gt;
#include &lt;algorithm&gt;&gt;
#include &lt;vector&gt;

using namespace std;

void save(string s)
{
  cout &lt;&lt; s &lt;&lt; &quot;\n&quot;;
}

int main()
{
    vector&lt;string&gt; result{&quot;1&quot;,&quot;2&quot;,&quot;3&quot;};
    for_each(result.begin(), result.end(), [](string s){ save(s); });
    return 0;
}
</code></pre>
<p>Macht aber wenig Sinn wenn sowieso ein neuer Compiler verfügbar ist. decimad hat schon die richtige Lösung gepostet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373537</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 24 Dec 2013 14:04:33 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 14:26:50 GMT]]></title><description><![CDATA[<p>µ schrieb:</p>
<blockquote>
<pre><code>for_each(result.begin(), result.end(), [](string s){ save(s); });
</code></pre>
<p>Macht aber wenig Sinn</p>
</blockquote>
<p>Da hast du Recht, du leitest den Aufruf unverändert weiter <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>Wenn, dann</p>
<pre><code>std::ofstream file(...)
auto lambda = [&amp;file] (const std::string&amp; s) { save(s, file); };
</code></pre>
<p>Aber nimm decimads Lösung, die ist am simpelsten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373541</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 24 Dec 2013 14:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to for_each on Tue, 24 Dec 2013 14:27:29 GMT]]></title><description><![CDATA[<p>Ok, danke für die vielen Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373542</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Tue, 24 Dec 2013 14:27:29 GMT</pubDate></item></channel></rss>