<?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[std::list: Bleibt end gültig ?]]></title><description><![CDATA[<p>Also, folgender Sachverhalt:</p>
<pre><code class="language-cpp">std::list&lt;int&gt; ilist;
std::list&lt;int&gt;::iterator iend = ilist.end();
ilist.push_back(3);
// Ist end hier noch gültig ? bzw. liefert std::list::end immer den selben wert ?
</code></pre>
<p>Ich vermute das es so ist, bin mir aber net sicher, also ist es so oder net ?</p>
<p>mfg.</p>
<p>phlox</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124258/std-list-bleibt-end-gültig</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 23:37:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124258.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2005 06:04:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 06:04:26 GMT]]></title><description><![CDATA[<p>Also, folgender Sachverhalt:</p>
<pre><code class="language-cpp">std::list&lt;int&gt; ilist;
std::list&lt;int&gt;::iterator iend = ilist.end();
ilist.push_back(3);
// Ist end hier noch gültig ? bzw. liefert std::list::end immer den selben wert ?
</code></pre>
<p>Ich vermute das es so ist, bin mir aber net sicher, also ist es so oder net ?</p>
<p>mfg.</p>
<p>phlox</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900819</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Wed, 26 Oct 2005 06:04:26 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 06:07:35 GMT]]></title><description><![CDATA[<p>Ich kann zwar jetzt nicht die richtige Stelle im Standard zitieren, abar afaik bleiben list&lt;&gt; Iteratoren immer gültig (außer wenn du sie selber löschst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900820</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 26 Oct 2005 06:07:35 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 06:59:14 GMT]]></title><description><![CDATA[<p>definiere gültig. Der Iterator end() sollte nie dereferenziert werden, da er auf die Stelle nach dem letzten Element der Liste zeigt. Allerdings sollte end() - 1 demzufolge auf das letzte Element zeigen. Kannst ja mal folgendes versuchen:</p>
<pre><code class="language-cpp">list&lt;int&gt; testlist;
testlist.push_back(0);
list&lt;int&gt;::iterator ite = testlist.end();
list&lt;int&gt;::iterator it0 = ite - 1; //sollte jetzt auf das Element mit der 0 zeigen

testlist.push_back(1);
list&lt;int&gt;::iterator it1 = ite - 1;

cout &lt;&lt; &quot;it0: &quot; &lt;&lt; *it0 &lt;&lt; &quot;;\n&quot;
     &lt;&lt; &quot;it1: &quot; &lt;&lt; *it1 &lt;&lt; &quot;;\n&quot;;
</code></pre>
<p>Wenn ite auch nach dem Einfügen der 1 noch hinter das Ende der Liste zeigt, sollte die Ausgabe &quot;0; 1;&quot; lauten. Zeigt ite einfach hinter die 0, könnte die Ausgabe &quot;0; 0;&quot; sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900858</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 26 Oct 2005 06:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 07:17:04 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>definiere gültig. Der Iterator end() sollte nie dereferenziert werden, da er auf die Stelle nach dem letzten Element der Liste zeigt. Allerdings sollte end() - 1 demzufolge auf das letzte Element zeigen. Kannst ja mal folgendes versuchen:</p>
<pre><code class="language-cpp">list&lt;int&gt; testlist;
testlist.push_back(0);
list&lt;int&gt;::iterator ite = testlist.end();
list&lt;int&gt;::iterator it0 = ite - 1; //sollte jetzt auf das Element mit der 0 zeigen

testlist.push_back(1);
list&lt;int&gt;::iterator it1 = ite - 1;

cout &lt;&lt; &quot;it0: &quot; &lt;&lt; *it0 &lt;&lt; &quot;;\n&quot;
     &lt;&lt; &quot;it1: &quot; &lt;&lt; *it1 &lt;&lt; &quot;;\n&quot;;
</code></pre>
<p>Wenn ite auch nach dem Einfügen der 1 noch hinter das Ende der Liste zeigt, sollte die Ausgabe &quot;0; 1;&quot; lauten. Zeigt ite einfach hinter die 0, könnte die Ausgabe &quot;0; 0;&quot; sein...</p>
</blockquote>
<p>Das ist mir schon klar, ich hab ach nicht vor, das zu tun.<br />
Ich will halt nur wissen, ob das Ende der Liste immer das Ende der Liste bleibt.<br />
Oder ob sich da was verändert. und statt end()-- nehm ich rbegin() <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>phlox</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900863</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Wed, 26 Oct 2005 07:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 07:20:20 GMT]]></title><description><![CDATA[<p>In 23.2.2.3 steht, dass insert, push_front und push_back (für Listen!) niemals Iteratoren und Referenzen invalidieren. erase, pop_front, pop_back und clear invalidieren nur Iteratoren und Referenzen auf gelöschte Elemente. Was heißen sollte, dass end selbst nach einem clear gültig bleibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900865</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 26 Oct 2005 07:20:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 10:30:51 GMT]]></title><description><![CDATA[<p>Probiers einfach aus. Wenn die Liste allerdings so funktioniert wie ich es mir vorstelle ist, dann ist end dannach nicht mehr gültig. Aber da nicht zählt was ich mir vorstelle, sondern das was man programmiert hat, würde ich sagen probier es einfach aus. Füge aber mal ein paar mehr Elemente an die Liste an (z.B. 50) wenn end dann immer noch am Ende der Liste ist stimmt es. (Kannst dann ja noch testen was passiert wenn du erase &amp; Co aufrufst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901028</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Wed, 26 Oct 2005 10:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 18:52:47 GMT]]></title><description><![CDATA[<p>flammenvogel schrieb:</p>
<blockquote>
<p>Probiers einfach aus. Wenn die Liste allerdings so funktioniert wie ich es mir vorstelle ist, dann ist end dannach nicht mehr gültig. Aber da nicht zählt was ich mir vorstelle, sondern das was man programmiert hat, würde ich sagen probier es einfach aus. Füge aber mal ein paar mehr Elemente an die Liste an (z.B. 50) wenn end dann immer noch am Ende der Liste ist stimmt es. (Kannst dann ja noch testen was passiert wenn du erase &amp; Co aufrufst)</p>
</blockquote>
<p>Dann hast du scheinbar eine falsche Vorstellung davon wie man eine Liste ungefähr implementiert. Außerdem, hast du 7H3 N4C3Rs Post nicht gesehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901463</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 26 Oct 2005 18:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Wed, 26 Oct 2005 22:44:39 GMT]]></title><description><![CDATA[<p>Das ist schon möglich, ich habs einmal versucht, nachdem ich ein Tutorial über Container Klassen gelesen habe. (Da stand ungefähr drin wie es geht)...</p>
<p>Und nein ich habe den Post nicht gelesen. Als ich geantwortet habe war die irgendwie gerade nicht da. <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/901602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901602</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Wed, 26 Oct 2005 22:44:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Thu, 27 Oct 2005 06:51:50 GMT]]></title><description><![CDATA[<p>Ausprobieren ist im Fall der Standardbibliothek keine erlaubte Technik. Das kann mit der einen Implementierung funktionieren, mit der anderen nicht.</p>
<p>Auch ist list::iterator::operator- nicht definiert. Daher ist folgendes nicht erlaubt:</p>
<pre><code>list&lt;int&gt;::iterator ite = testlist.end();
list&lt;int&gt;::iterator it0 = ite - 1;
</code></pre>
<p>list::iterator ist ein bidirectional Iterator aber kein random access Iterator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901659</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 27 Oct 2005 06:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to std::list: Bleibt end gültig ? on Thu, 27 Oct 2005 06:55:16 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Ausprobieren ist im Fall der Standardbibliothek keine erlaubte Technik. Das kann mit der einen Implementierung funktionieren, mit der anderen nicht.</p>
</blockquote>
<p>Stimmt, erlaubt ist nur ein Blick in die Definition - und dort steht drin, daß list&lt;&gt; nur die Iteratoren ungültig macht, die direkt gelöscht wurden.</p>
<blockquote>
<p>Auch ist list::iterator::operator- nicht definiert. Daher ist folgendes nicht erlaubt:</p>
<pre><code>list&lt;int&gt;::iterator ite = testlist.end();
list&lt;int&gt;::iterator it0 = ite - 1;
</code></pre>
</blockquote>
<p>Zur Not kann man ja advance() stattdessen nehmen - und das ist für jeden Iterator definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901664</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 27 Oct 2005 06:55:16 GMT</pubDate></item></channel></rss>