<?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[Iterator pointer]]></title><description><![CDATA[<p>Ich iteriere ne liste und will testen, ob der iterator gerade auf front zeigt, ist es richtig, den Iterator so aufzulösen:</p>
<pre><code class="language-cpp">for(std::list&lt;Foo&gt;::iterator iter = bar.begin(); iter != bar.end(); ++iter)
{
  if(&amp;*iter==&amp;bar.front())
  {...}
}
</code></pre>
<p>Es kompiliert, aber ist es semantisch korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229222/iterator-pointer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 02:18:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229222.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Dec 2008 08:36:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 08:37:48 GMT]]></title><description><![CDATA[<p>Ich iteriere ne liste und will testen, ob der iterator gerade auf front zeigt, ist es richtig, den Iterator so aufzulösen:</p>
<pre><code class="language-cpp">for(std::list&lt;Foo&gt;::iterator iter = bar.begin(); iter != bar.end(); ++iter)
{
  if(&amp;*iter==&amp;bar.front())
  {...}
}
</code></pre>
<p>Es kompiliert, aber ist es semantisch korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627465</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Tue, 09 Dec 2008 08:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 08:39:12 GMT]]></title><description><![CDATA[<p>Vergleiche den Iterator lieber mit begin(). Das liefert ja auch einen Iterator.</p>
<pre><code class="language-cpp">if(iter==bar.begin())
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1627467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627467</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 09 Dec 2008 08:39:12 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 09:11:33 GMT]]></title><description><![CDATA[<p>Naja ich prüfe aber auch auf bar.back() und das ist nicht äquivalent mit bar.end()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627489</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Tue, 09 Dec 2008 09:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 09:29:32 GMT]]></title><description><![CDATA[<p>Was hat das damit zu tun? Deswegen kannst du doch trotzdem gegen begin() prüfen.<br />
Der Iterator auf das letzte Element ist dann end()-1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627497</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 09 Dec 2008 09:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 09:35:32 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Der Iterator auf das letzte Element ist dann end()-1</p>
</blockquote>
<p>Oder rbegin().</p>
<p>Alternativ:</p>
<pre><code class="language-cpp">std::list&lt;Foo&gt;::iterator last = bar.end();
std::list&lt;Foo&gt;::iterator end = last--;

for(std::list&lt;Foo&gt;::iterator iter = bar.begin(); iter != end; ++iter)
{
  if(iter==last)
  {...}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1627500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627500</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 Dec 2008 09:35:32 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 09:37:27 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Der Iterator auf das letzte Element ist dann end()-1</p>
</blockquote>
<p>Nein ist er nicht.</p>
<p>Edit: Oder doch? Auf jeden Fall kann ich iter+1 usw nicht machen, was mich stört</p>
<p>Meine Frage nochmal, ist die Auflösung &amp;*iter korrekt um die Adresse des foo Elements zu bekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627501</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Tue, 09 Dec 2008 09:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 12:34:25 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>Edit: Oder doch? Auf jeden Fall kann ich iter+1 usw nicht machen, was mich stört</p>
</blockquote>
<p>Das liegt daran, dass + und - nur für Random Access definiert sind. List-Iteratoren sind aber nur Bidirektional, da funktioniert nur ++ und --.</p>
<blockquote>
<p>Meine Frage nochmal, ist die Auflösung &amp;*iter korrekt um die Adresse des foo Elements zu bekommen?</p>
</blockquote>
<p>Solange Du die Sequenz nicht änderst, ist garantiert, dass die Adressen der Elemente fix bleiben. Du darfst dann also &amp;*iter mit &amp;foo.back() vergleichen, ja (Solange iter != end() und foo.size() &gt; 0).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627505</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 Dec 2008 12:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator pointer on Tue, 09 Dec 2008 12:06:51 GMT]]></title><description><![CDATA[<p>Hab es verstanden,<br />
danke an euch beide <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/1627569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627569</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Tue, 09 Dec 2008 12:06:51 GMT</pubDate></item></channel></rss>