<?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[vector.end() == 0 ?]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe ein Objekt <em>vector&lt;xyz&gt; obj</em>. Beim durch-iterieren wurde irgendwie immer über das Ende rausgegangen, abgefragt hab ich mit</p>
<pre><code class="language-cpp">vector&lt;XYZ&gt;::iterator pos = obj.begin();
vector&lt;XYZ&gt;::iterator end = obj.end();
while ( pos != end )
    ...
</code></pre>
<p>Gewundert hab ich mich, die Ausgabe der Pointer der Iteratoren ergaben für <em>pos</em> einen validen Pointer auf ein Objekt von <em>XYZ</em> (außer beim drübergehen natürlich), der &quot;Wert&quot; von <em>end</em> war 0. Beim ausprobieren von anderen Vektoren war <em>end</em> immer ein &quot;gültiger&quot; Wert, also *obj.begin() + obj.size()<em>sizeof(XYZ)</em>.<br />
Ist das normal oder an was könnte das liegen? Der vector hat definitv gültige Werte, ist normal deklariert und alles, nur <em>.end()</em> gibt einen NULL-Pointer zurück <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/topic/187894/vector-end-0</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 21:59:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187894.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Jul 2007 10:11:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector.end() == 0 ? on Wed, 25 Jul 2007 10:11:50 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe ein Objekt <em>vector&lt;xyz&gt; obj</em>. Beim durch-iterieren wurde irgendwie immer über das Ende rausgegangen, abgefragt hab ich mit</p>
<pre><code class="language-cpp">vector&lt;XYZ&gt;::iterator pos = obj.begin();
vector&lt;XYZ&gt;::iterator end = obj.end();
while ( pos != end )
    ...
</code></pre>
<p>Gewundert hab ich mich, die Ausgabe der Pointer der Iteratoren ergaben für <em>pos</em> einen validen Pointer auf ein Objekt von <em>XYZ</em> (außer beim drübergehen natürlich), der &quot;Wert&quot; von <em>end</em> war 0. Beim ausprobieren von anderen Vektoren war <em>end</em> immer ein &quot;gültiger&quot; Wert, also *obj.begin() + obj.size()<em>sizeof(XYZ)</em>.<br />
Ist das normal oder an was könnte das liegen? Der vector hat definitv gültige Werte, ist normal deklariert und alles, nur <em>.end()</em> gibt einen NULL-Pointer zurück <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/1332141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332141</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 25 Jul 2007 10:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to vector.end() == 0 ? on Wed, 25 Jul 2007 10:40:51 GMT]]></title><description><![CDATA[<p>Und was ist jetzt daran so ungewöhnlich das end null ist? Ich finde das ist ein durchaus legitimer Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332153</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 25 Jul 2007 10:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector.end() == 0 ? on Wed, 25 Jul 2007 10:45:31 GMT]]></title><description><![CDATA[<p>Hm, finde ich nicht.. Jedenfalls kann ich so nicht durch die Elemente iterieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>edit: Ach verflucht, jetzt gehts <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> War ein verteufelt dämlicher Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Aber danke fürs Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332155</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 25 Jul 2007 10:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to vector.end() == 0 ? on Wed, 25 Jul 2007 10:45:33 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>: Wie ist denn vector&lt;&gt;::end() definiert? Ich kann mir nicht vorstellen, daß dort NULL herauskommen sollte (außer eventuell bei einem komplett leeren Vector)</p>
<p>Artchi schrieb:</p>
<blockquote>
<p>Und was ist jetzt daran so ungewöhnlich das end null ist? Ich finde das ist ein durchaus legitimer Wert.</p>
</blockquote>
<p>Bestimmt nicht - end() sollte schon die Position hinter dem letzten Datenelement liefern, alles andere wäre nicht standardkonform.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332157</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Jul 2007 10:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to vector.end() == 0 ? on Wed, 25 Jul 2007 11:04:12 GMT]]></title><description><![CDATA[<p>ja, end() ist bei meinem VS 2003 so definiert</p>
<pre><code class="language-cpp">iterator end()
{
    return (iterator(_Mylast));
}
</code></pre>
<p>deshalb hatte ich mich auch gewundert... Und du hast Recht, ausversehen hab ich <em>end()</em> von einem leeren Vektor aufgerufen, das nächste mal weiß ich Bescheid <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>
<p>Wie es passiert ist (wirklich dämlich, aber ich hab echt lange zum Entdecken gebraucht):<br />
Ich hab eine Baum-Struktur:</p>
<pre><code class="language-cpp">struct Expression
{
    string             text;
    vector&lt;Expression&gt; expr;
};
</code></pre>
<p>Durch die erste Ebene der Expressions hab ich durchiteriert, bei einem bestimmten Punkt gehe ich in die zweite Ebene:</p>
<pre><code class="language-cpp">vector&lt;Expression&gt;::const_iterator pos = expressions.begin();
vector&lt;Expression&gt;::const_iterator end = expressions.end();
//...
if ( pos-&gt;text==&quot;()&quot; &amp;&amp; pos-&gt;expr.size()&gt;0 )
{
    // Die Iteratoren werden jetzt auf die nächste Ebene gesetzt
    pos = pos-&gt;expr.begin();  // Das ist natürlich in Ordnung...
    end = pos-&gt;expr.end();    // ...und das natürlich Schwachfug, der nächstuntere Vektor war leer...
    //...
}
</code></pre>
<p>Wie man sieht war's wirklich ein wenig doof, aber ich bin froh, dass ich's jetzt raushab... Und ich bin mir wirklich sicher, das passiert mir <em>nie</em> wieder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
^Oder wenn es passiert, bekomm ich es gaaaaanz schnell raus :)^</p>
<p>edit: und ich musste jetzt natürlich nur die zwei Zeilen der Neuzuweisungen vertauschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332167</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:04:12 GMT</pubDate></item></channel></rss>