<?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 Problem]]></title><description><![CDATA[<p>Hoi.</p>
<p>Ich habe ein kleines Problem.<br />
Ich versuche for_each mit meinem custom Inputiterator zu benutzen. Leider gibt es nur einen Durchgang:</p>
<pre><code class="language-cpp">for_each(Process::iterator(0), Process::iterator(), [&amp;](PROCESSENTRY32W proc)
{
  .......
});
</code></pre>
<p>Löse ich es über eine normale for-Schleife, dann klappt es korrekt:</p>
<pre><code class="language-cpp">for(Process::iterator it(0); it != Process::iterator(); ++it)
{
  .......
}
</code></pre>
<p>Was mich etwas verwirrt, schließlich ist std::for_each mit der selben Logik geschrieben:</p>
<pre><code class="language-cpp">template&lt;class _InIt,
	class _Fn1&gt; inline
	_Fn1 _For_each(_InIt _First, _InIt _Last, _Fn1 _Func)
	{	// perform function for each element
	for (; _First != _Last; ++_First)
		_Func(*_First);
	return (_Func);
	}
</code></pre>
<p>Kann mir jemand auf die Sprünge helfden?<br />
Danke! <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/topic/277423/for_each-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 21:51:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277423.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Nov 2010 13:47:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to for_each Problem on Thu, 18 Nov 2010 13:47:35 GMT]]></title><description><![CDATA[<p>Hoi.</p>
<p>Ich habe ein kleines Problem.<br />
Ich versuche for_each mit meinem custom Inputiterator zu benutzen. Leider gibt es nur einen Durchgang:</p>
<pre><code class="language-cpp">for_each(Process::iterator(0), Process::iterator(), [&amp;](PROCESSENTRY32W proc)
{
  .......
});
</code></pre>
<p>Löse ich es über eine normale for-Schleife, dann klappt es korrekt:</p>
<pre><code class="language-cpp">for(Process::iterator it(0); it != Process::iterator(); ++it)
{
  .......
}
</code></pre>
<p>Was mich etwas verwirrt, schließlich ist std::for_each mit der selben Logik geschrieben:</p>
<pre><code class="language-cpp">template&lt;class _InIt,
	class _Fn1&gt; inline
	_Fn1 _For_each(_InIt _First, _InIt _Last, _Fn1 _Func)
	{	// perform function for each element
	for (; _First != _Last; ++_First)
		_Func(*_First);
	return (_Func);
	}
</code></pre>
<p>Kann mir jemand auf die Sprünge helfden?<br />
Danke! <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/1982282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982282</guid><dc:creator><![CDATA[Dasgehtwohlwas]]></dc:creator><pubDate>Thu, 18 Nov 2010 13:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to for_each Problem on Thu, 18 Nov 2010 13:53:44 GMT]]></title><description><![CDATA[<p>Komische Parameter hast du da...</p>
<p><a href="http://www.cplusplus.com/reference/algorithm/for_each/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/for_each/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982284</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 18 Nov 2010 13:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to for_each Problem on Thu, 18 Nov 2010 13:58:24 GMT]]></title><description><![CDATA[<p>Dasgehtwohlwas schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for_each(Process::iterator(0), Process::iterator(), [&amp;](PROCESSENTRY32W proc)
{
  .......
});
</code></pre>
</blockquote>
<p>edit: Vergiss, was hier stand.</p>
<p>edit: Ach, das ist ein Lambdaausdruck. Dann sieht es eigentlich richtig aus. Zeig mal ein compilierbares Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982285</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 18 Nov 2010 13:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to for_each Problem on Thu, 18 Nov 2010 14:19:34 GMT]]></title><description><![CDATA[<pre><code>Komische Parameter hast du da...
</code></pre>
<p>Naja, ich musste ein bischen hacken da der Iterator über Datenmengen mit unbekannter Größe iteriert. Von daher erzeugt der Default-Constructor einen ungültigen iterator und beim Vergleichen wird jediglich die Gültigkeit verglichen um zu wissen ob der echte Iterator noch gültig ist.</p>
<pre><code>Zeig mal ein compilierbares Beispiel.
</code></pre>
<p>Mit einem Vektor zb klappt es ja, das irritiert mich <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=":/"
      alt="😕"
    /><br />
Deswegen ist der Haken wohl bei meinem Iterator zu suchen.</p>
<p>Ich komme nicht darauf, warum es mit einer normalen for-Schleife klappt aber mit for_each nicht, obwohl es doch eigentlich identisch funktioniert <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982294</guid><dc:creator><![CDATA[Dagehtwohlwas]]></dc:creator><pubDate>Thu, 18 Nov 2010 14:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to for_each Problem on Thu, 18 Nov 2010 14:58:56 GMT]]></title><description><![CDATA[<p>Ich habe etwas rumprobiert.</p>
<p>Zu allererst der komplette Sourcecode (Bin gerade dabei Kommentierten Beispielscode für meine Library zu schreiben :&gt; ):</p>
<pre><code class="language-cpp">//C++ header files:
#include &lt;algorithm&gt;
#include &lt;iostream&gt;

//Synthetic header files:
#include &lt;Synthetic.hpp&gt;

using namespace std;
using namespace Synthetic;

int main(int, char**)
{
	//Almost all Synthetic functions throw exceptions in case of error
	try
	{
		// Start iterating processes.
		// A iterator constructed with an id of zero means that we don't want to
		// target a specific process.
		// The second iterator constructed with the default constructor is invalid,
		// what we want to be able to use std::for_each
		// We use C++0x lamba-feature instead of creating a custom functor
		Process::iterator first(0), last();
		for_each(first, last, [&amp;](PROCESSENTRY32W proc)
		{
			//I imitate the original examples output
			wcout &lt;&lt; L&quot;\n\n=====================================================&quot;;
			wcout &lt;&lt; L&quot;\nPROCESS NAME: &quot; &lt;&lt; proc.szExeFile;
			wcout &lt;&lt; L&quot;\n-----------------------------------------------------&quot;;

			//Print information about the process
			wcout &lt;&lt; L&quot;\n  Process ID        = 0x&quot;	&lt;&lt; hex &lt;&lt; proc.th32ProcessID;
			wcout &lt;&lt; L&quot;\n  Thread count      = &quot;	&lt;&lt; dec &lt;&lt; proc.cntThreads;
			wcout &lt;&lt; L&quot;\n  Parent process ID = 0x&quot;	&lt;&lt; hex &lt;&lt; proc.th32ParentProcessID;
			wcout &lt;&lt; L&quot;\n  Priority base     = &quot;	&lt;&lt; dec &lt;&lt; proc.pcPriClassBase;
		});
	}
	catch(const exception&amp; e) //Synthetic's exceptions inherit from std::exception
	{
		//Output a formatted error message
		cout &lt;&lt; e.what();
	}

	return 0;
}
</code></pre>
<p>Das gibt beim Kompilieren folgenden Fehler:</p>
<blockquote>
<p>1&gt;x\main.cpp(36): error C2782: '_Fn1 std::for_each(_InIt,_InIt,_Fn1)' : template parameter '_InIt' is ambiguous<br />
1&gt; x\include\algorithm(28) : see declaration of 'std::for_each'<br />
1&gt; could be 'Synthetic::Process::iterator (__cdecl *)(void)'<br />
1&gt; or 'Synthetic::Process::iterator'<br />
1&gt;x\main.cpp(36): error C2784: '_Fn1 std::for_each(_InIt,_InIt,_Fn1)' : could not deduce template argument for '_InIt' from 'Synthetic::Process::iterator'<br />
1&gt; x\include\algorithm(28) : see declaration of 'std::for_each'<br />
1&gt;</p>
</blockquote>
<p>Sind das für den Compiler echt 2 unterschiedliche Typen, nur weil sie mit unterschiedlichen Constructor konstruiert werden?</p>
<p>oO</p>
<p>Grüße,<br />
Flo <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/1982329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982329</guid><dc:creator><![CDATA[Dagehtwohlwas]]></dc:creator><pubDate>Thu, 18 Nov 2010 14:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to for_each Problem on Thu, 18 Nov 2010 15:04:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Process::iterator first(0), last();
</code></pre>
<p><code>first</code> ist ein Objekt, <code>last</code> ist eine Funktionsdeklaration. Lass die Klammern bei <code>last</code> weg, dann ist es auch ein Objekt.</p>
<p>Zum Unterschied zwischen deiner <code>for</code> -Schleife und <code>for_each</code> :<br />
Was mir spontan auffällt, bei deiner Schleife rufst du regelmässig <code>Process::iterator()</code> auf. Bei der <code>for_each</code> Funktion dagegen, wird sie nur einmal aufgerufen und der Iterator, bzw. alle Iteratoren, werden kopiert.</p>
<p>Setz mal deine Suche an diesen Punkten an.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1982336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1982336</guid><dc:creator><![CDATA[dravere_off]]></dc:creator><pubDate>Thu, 18 Nov 2010 15:04:06 GMT</pubDate></item></channel></rss>