<?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[Frage zu For-Schleife und Iteration?]]></title><description><![CDATA[<p>folgende Schleife soll vom Listen ende bis zur Position (it_New) rückwärte die liste travesieren, dabei soll die forschleife nich bei it_New, sonder eine einheit davor beginnen. bisher so gelöst:</p>
<pre><code class="language-cpp">for(std::list&lt;CAllocStruct::CAllocNode*&gt;::iterator it = it_New; it!= m_pMyBase-&gt;m_lList.begin();){

		--it;
.
.   //Mit inhalt von it arbeiten
.

}
</code></pre>
<p>gibts da ne bessere variante?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186752/frage-zu-for-schleife-und-iteration</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 11:27:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186752.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jul 2007 05:39:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 05:40:40 GMT]]></title><description><![CDATA[<p>folgende Schleife soll vom Listen ende bis zur Position (it_New) rückwärte die liste travesieren, dabei soll die forschleife nich bei it_New, sonder eine einheit davor beginnen. bisher so gelöst:</p>
<pre><code class="language-cpp">for(std::list&lt;CAllocStruct::CAllocNode*&gt;::iterator it = it_New; it!= m_pMyBase-&gt;m_lList.begin();){

		--it;
.
.   //Mit inhalt von it arbeiten
.

}
</code></pre>
<p>gibts da ne bessere variante?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323512</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 12 Jul 2007 05:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 05:47:34 GMT]]></title><description><![CDATA[<p>sieht doch ok aus. wenn du das --it in der schleife nicht haben willst, verlager es doch in den for body.</p>
<pre><code class="language-cpp">for(--(std::list&lt;CAllocStruct::CAllocNode*&gt;::iterator it = it_New); it!= m_pMyBase-&gt;m_lList.begin(); --it)
// müsste eigentlich auch gehen:
for(std::list&lt;CAllocStruct::CAllocNode*&gt;::iterator it = (it_New - 1); it!= m_pMyBase-&gt;m_lList.begin(); --it)
</code></pre>
<p>schöner find ich die version allerdings nicht ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323513</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 12 Jul 2007 05:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 05:46:47 GMT]]></title><description><![CDATA[<p>Ja, verwend nen reverse_iterator und rbegin, rend der Liste:</p>
<pre><code class="language-cpp">for ( list_type::reverse_iterator it( list.rbegin() ); it != list.rend(); ++it )
{
	std::cout &lt;&lt; ( *it ) &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1323515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323515</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 12 Jul 2007 05:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 05:48:31 GMT]]></title><description><![CDATA[<p>moment, vergiss meine lösung. die ist fehlerhaft <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/1323516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323516</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 12 Jul 2007 05:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 06:16:11 GMT]]></title><description><![CDATA[<p>ist sowas möglich#?</p>
<p>for(<strong>--(std::list<a href="CAllocStruct::CAllocNode*" rel="nofollow">CAllocStruct::CAllocNode*</a>::iterator it = it_New)</strong>; it!= m_pMyBase-&gt;m_lList.begin(); --it)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323527</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 12 Jul 2007 06:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 06:18:46 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ist sowas möglich#?</p>
<p>for(<strong>--(std::list<a href="CAllocStruct::CAllocNode*" rel="nofollow">CAllocStruct::CAllocNode*</a>::iterator it = it_New)</strong>; it!= m_pMyBase-&gt;m_lList.begin(); --it)</p>
</blockquote>
<p>Nein. Was spricht deiner Meinung gegen den reverse_iterator?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323528</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 12 Jul 2007 06:18:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 06:36:35 GMT]]></title><description><![CDATA[<p>jepp schau mir den grad an;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323537</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 12 Jul 2007 06:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 07:04:22 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ist sowas möglich#?</p>
<p>for(<strong>--(std::list<a href="CAllocStruct::CAllocNode*" rel="nofollow">CAllocStruct::CAllocNode*</a>::iterator it = it_New)</strong>; it!= m_pMyBase-&gt;m_lList.begin(); --it)</p>
</blockquote>
<p>ich sagte ja, es sei fehlerhaft <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="😉"
    /> der fehler ist aber primär, dass der iterator so möglicherweise nicht korrekt überprüft wird, nämlich genau dann, wenn it_New bereits auf m_lList.begin() zeigt.</p>
<p>das sekundäre problem ist, dass durch die klammerung die deklaration verschwindet. grundsätzlich geht sowas aber schon.</p>
<pre><code class="language-cpp">std::list&lt;CAllocStruct::CAllocNode*&gt;::iterator it;
for(--(it = it_New); it!= m_pMyBase-&gt;m_lList.begin(); --it)
</code></pre>
<p>der primäre fehler ist natürlich weiterhin enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323547</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 12 Jul 2007 07:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 07:22:23 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>folgende Schleife soll vom Listen ende bis zur Position (it_New) rückwärte die liste travesieren, dabei soll die forschleife nich bei it_New, sonder eine einheit davor beginnen. bisher so gelöst:</p>
<pre><code class="language-cpp">for(std::list&lt;CAllocStruct::CAllocNode*&gt;::iterator it = it_New; it!= m_pMyBase-&gt;m_lList.begin();){
		
		--it;
.   //Mit inhalt von it arbeiten
}
</code></pre>
<p>gibts da ne bessere variante?</p>
</blockquote>
<pre><code class="language-cpp">for( std::list&lt;CAllocStruct::CAllocNode*&gt;::reverse_iterator it( it_New ) // it zeigt hier auf eine Position VOR it_New
        ; it != m_pMyBase-&gt;m_lList.rend(); ++it )
    {
        // mit *it arbeiten
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323563</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 12 Jul 2007 07:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu For-Schleife und Iteration? on Thu, 12 Jul 2007 11:59:22 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>folgende Schleife soll vom Listen ende bis zur Position (it_New) rückwärte die liste travesieren, dabei soll die forschleife nich bei it_New, sonder eine einheit davor beginnen.</p>
</blockquote>
<p>Also entweder ich bin jetzt völlig bekloppt, oder deine Beschreibung und dein Code passen überhaupt nicht zusammen. Du schreibst: &quot;vom Listen ende&quot;, das wäre list.end(). &quot;bis zur Position (it_New) rückwärte&quot; impliziert, dass it_New *vor* list.end() liegt und damit den Endpunkt der Traversierung markiert. Damit ist &quot;dabei soll die forschleife nich bei it_New, sonder eine einheit davor beginnen&quot; unlogisch, da du damit einen Startpunkt außerhalb des zu traversierenden Bereichs hättest.</p>
<p>Dein Code hingegen sagt: Von it_new rückwärts bis list.begin(). Damit traversierst du also nicht &quot;vom Listen ende&quot; sondern von it_new und nicht &quot;bis zur Position (it_New) rückwärte&quot; sondern bis list.begin().</p>
<p>Mal davon abgesehen: Wie bereits gesagt wurde, gibt es zum rückwärts-traversieren von STL-Containern extra die reverse-Iteratoren. Die Alternative wäre die kanonische Schleife fürs Rückwärtslaufen (benutzt man meist, wenn man mit unsigned-Werten arbeitet)<br />
Zur Erinnerung:</p>
<pre><code class="language-cpp">iterator x = list.end();
while (x != list.begin()) {
   --x;
   // do something with x
}
</code></pre>
<p>Für deinen Fall, so ich ihn denn richtig verstehe:</p>
<pre><code class="language-cpp">iterator x = it_New;
while (x != list.begin()) {
   --x;
   // do something with x
}
</code></pre>
<p>Der Unterschied zu deiner Schleife ist übrigens, dass diese hier auch bei einer leeren Liste funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323823</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 12 Jul 2007 11:59:22 GMT</pubDate></item></channel></rss>