<?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[Wird vector.end() ungültig bei vector.erase()?]]></title><description><![CDATA[<p>Hallo.<br />
Wie der Titel schon sagt - wird auch vector.end() ungültig, wenn ich einen Eintrag lösche? Oder bleibt er konstant?<br />
Würde er ungültig werden, kann folgendes ja nur schief gehen, oder?</p>
<pre><code class="language-cpp">vector&lt;Key_s*&gt;::iterator end = this-&gt;m_vecWorker.end();

for (vector&lt;Key_s*&gt;::iterator it = this-&gt;m_vecWorker.begin(); it != end; it++)
{
	Key_s *pKey = (*it);

	// mach was

	if (pKey-&gt;bla)
	{
		it = this-&gt;m_vecWorker.erase(it);
	}
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265574/wird-vector-end-ungültig-bei-vector-erase</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 23:34:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265574.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Apr 2010 16:54:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 16:54:37 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Wie der Titel schon sagt - wird auch vector.end() ungültig, wenn ich einen Eintrag lösche? Oder bleibt er konstant?<br />
Würde er ungültig werden, kann folgendes ja nur schief gehen, oder?</p>
<pre><code class="language-cpp">vector&lt;Key_s*&gt;::iterator end = this-&gt;m_vecWorker.end();

for (vector&lt;Key_s*&gt;::iterator it = this-&gt;m_vecWorker.begin(); it != end; it++)
{
	Key_s *pKey = (*it);

	// mach was

	if (pKey-&gt;bla)
	{
		it = this-&gt;m_vecWorker.erase(it);
	}
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888156</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 25 Apr 2010 16:54:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 17:00:20 GMT]]></title><description><![CDATA[<p>Nein. Das ist Ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888158</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Apr 2010 17:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 17:20:51 GMT]]></title><description><![CDATA[<p>Zum Glück, weil sonst hätte ich doch einiges zu ändern *puh*</p>
<p>Danke!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888170</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 25 Apr 2010 17:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 18:28:31 GMT]]></title><description><![CDATA[<p>Hab ich da grade ne Schraube im Hirn? Wenn man ein Element im vector löscht, werden doch die darauffolgenden nach vorne kopiert. Also wird der end-Iterator ungültig, oder? Du kannst doch aber in der Schleifenbedingung immer direkt .end() aufrufen.<br />
Btw: Wird bei dem <code>it = this-&gt;m_vecWorker.erase(it);</code> mit anschließendem <code>it++</code> im Schleifenkopf nicht ein Element übersprungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888208</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 18:46:25 GMT]]></title><description><![CDATA[<p><code>end</code> ist halt kein normaler Iterator. Den gibts ja z.B auch, auch wenn es kein Element im Container gibt. Es macht auch logisch überhaupt keinen Sinn den irgendwie zu verändern, wenn man den Container verändert.</p>
<blockquote>
<p>Btw: Wird bei dem it = this-&gt;m_vecWorker.erase(it); mit anschließendem it++ im Schleifenkopf nicht ein Element übersprungen?</p>
</blockquote>
<p>Doch. Das habe ich im obigen Code übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888219</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Apr 2010 18:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 19:25:07 GMT]]></title><description><![CDATA[<p>Ich stell mir das blos grade bildlich vor (beim Vector sind die Iteratoren im einfachsten Fall ja blos einfache Zeiger):</p>
<pre><code>1  2  3  4  5  6
   ^              ^
  it             end

// Element bei it wird gelöscht

1  3  4  5  6  ?
   ^              ^
  it             end
</code></pre>
<p>Also wird end ungültig (beachte, das hier die Variable end gemeint ist, nicht der Rückgabewert von end()).<br />
Wo ist jetzt mein Denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888228</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 25 Apr 2010 19:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 19:31:30 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Nein. Das ist Ok.</p>
</blockquote>
<p>Da das Beispiel von ipsec korrekt ist, kann das so nicht stimmen. Du iterierst ja nicht bis (vec.begin()+vec.size()) sondern bis vec.end(). Und das ist halt schwierig zu implementieren, wenn das mit einem Zeiger gemacht wird. Und wie wir wissen sind Zeigerimplementationen standardkonform.</p>
<p>Der Punkt ist eigentlich, dass die Funktion vector::end() sich anpasst. Es wird also nach jedem erase ein anderer Iterator zurückgegeben. Aber speichert man ihn wie der OP in einer variable, geht da snatülich nicht mehr. Das ist ein Zugriff auf tote Objekte. crasht zwar (meistens) nicht, tut aber auch nicht das, was es soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888230</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 25 Apr 2010 19:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 19:44:20 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Nein. Das ist Ok.</p>
</blockquote>
<p>Da das Beispiel von ipsec korrekt ist, kann das so nicht stimmen. Du iterierst ja nicht bis (vec.begin()+vec.size()) sondern bis vec.end(). Und das ist halt schwierig zu implementieren, wenn das mit einem Zeiger gemacht wird. Und wie wir wissen sind Zeigerimplementationen standardkonform.</p>
<p>Der Punkt ist eigentlich, dass die Funktion vector::end() sich anpasst. Es wird also nach jedem erase ein anderer Iterator zurückgegeben. Aber speichert man ihn wie der OP in einer variable, geht da snatülich nicht mehr. Das ist ein Zugriff auf tote Objekte. crasht zwar (meistens) nicht, tut aber auch nicht das, was es soll.</p>
</blockquote>
<p>Widersprichst du dir da jetzt nicht gerade?</p>
<p>Ich habe kurz mal im Standard gesucht, aber auf die schnell nix gefunden, was gross über ::end etwas aussagt.</p>
<p>Ich verstehe auch nicht ganz, warum das schwierig sein sollte zu implementieren und warum sich end anpassen muss.</p>
<p>Wenn man Zeiger nimmt kann man das ja einfach mit einem 0 Zeiger realisieren, welcher allgemeingültig ist. Wenn ein Iterator sonst über das Ziel schiesst, wird er halt auch auf 0 gesetzt und ein Vergleich klappt und ist sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888235</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Apr 2010 19:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 20:00:25 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Nein. Das ist Ok.</p>
</blockquote>
<p>Bist du dir hier sicher oder tun das die Implementierungen, die du kennst? Mir wäre jedenfalls nicht bekannt, dass der Standard dieses Verhalten garantiert.</p>
<p>Ich sehe das ähnlich wie otze und denke nicht, dass <code>end()</code> zwischengespeichert werden kann. Zumindest nicht bei <code>std::vector</code> und <code>std::deque</code> , bei <code>std::list</code> und den assoziativen Containern hat man ohnehin die Iterator-Gültigkeits-Garantie.</p>
<p>Edit:</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Ich verstehe auch nicht ganz, warum das schwierig sein sollte zu implementieren und warum sich end anpassen muss.</p>
</blockquote>
<p>Weil die Semantik bei Zeigeriterationen so aussieht, dass auf das Element hinter dem letzten gültigen gezeigt wird. Die Adresse ist also immer wieder eine andere.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Wenn man Zeiger nimmt kann man das ja einfach mit einem 0 Zeiger realisieren, welcher allgemeingültig ist. Wenn ein Iterator sonst über das Ziel schiesst, wird er halt auch auf 0 gesetzt und ein Vergleich klappt und ist sinnvoll.</p>
</blockquote>
<p>Wie willst du ihn auf Null setzen? Das einzige, was du hast, ist ein <code>++itr</code> auf Anwenderseite. Kein <code>if</code> , kein gar nichts, nur ein roher Zeiger und ein ++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888237</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 25 Apr 2010 20:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 20:00:04 GMT]]></title><description><![CDATA[<p>Ich hab eben mal in den MSVC-Headern geguckt, wie die das dort gemacht haben:</p>
<pre><code class="language-cpp">iterator end()
{	// return iterator for end of mutable sequence
	return (iterator(_Mylast, this));
}

// _Mylast ist definiert als

pointer _Mylast;	// pointer to current end of sequence
</code></pre>
<p>Hier ist also end() ein Iterator, der auf das hypotethische Element hinter dem letzten zeigt. Damit mach auch der Vergleich Sinn, die Größe ergibt sich aus end() - begin(), beim Inkrement der Iteratoren muss im Prinzip nichts beachtet werden, kurzum eine imho sinnvolle Implementierung, die wohl in ähnlicher Form auch bei anderen Compilern zu finden sein wird. Einziges Problem: Wenn ich ein Element des vectors lösche, rücken alle nachfolgenden Elemente eine Position vor. Also muss auch end() eine Position vorrücken. Wenn man es aber den Wert in einer Variable speichert, passiert das nicht, d.h. bei der Iteration würde man über ein nicht vorhandenes Element iterieren, bevor man zu Variable end kommt. Das meinte otze mit &quot;end() passt sich an&quot;: Wenn man Elemente löscht, hat end() danach einen anderen Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888240</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 25 Apr 2010 20:00:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Sun, 25 Apr 2010 21:25:51 GMT]]></title><description><![CDATA[<p>Wenn end() immer das selbe liefern würde, wäre das eine ziemliche Katastrophe.</p>
<p>Einfach besipiel: implementiert einen iterator für std::vector um folgenden Code korrekt ausführen zu können:</p>
<pre><code class="language-cpp">vector::iterator i=vec.begin();
while(i!=vec.end()) {
  ++i;
}
</code></pre>
<p>Das Problem für i ist nun: wann ist das Ende erreicht? Ein simples</p>
<pre><code class="language-cpp">iterator&amp; operator++() {
  ++pointer_to_element;
}
</code></pre>
<p>reicht ja plötzlich nicht mehr. man muss ein:</p>
<pre><code class="language-cpp">iterator&amp; operator++() {
  ++pointer_to_element;
  if(pointer_to_element &gt;= vec.begin()+vec.size()) *this=vec.end();
}
</code></pre>
<p>von komplexeren containern mal komplett abgesehen <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/1888270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888270</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 25 Apr 2010 21:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Mon, 26 Apr 2010 07:09:37 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p><code>end</code> ist halt kein normaler Iterator. Den gibts ja z.B auch, auch wenn es kein Element im Container gibt. Es macht auch logisch überhaupt keinen Sinn den irgendwie zu verändern, wenn man den Container verändert.</p>
<blockquote>
<p>Btw: Wird bei dem it = this-&gt;m_vecWorker.erase(it); mit anschließendem it++ im Schleifenkopf nicht ein Element übersprungen?</p>
</blockquote>
<p>Doch. Das habe ich im obigen Code übersehen.</p>
</blockquote>
<p>Bei <code>std::vector::erase()</code> werden alle Iteratoren ab <em>position</em> bzw. <em>first</em> invalidiert. Wo steht was von einer Ausnahme für Iteratoren die man von <code>std::vector::end()</code> bekommen hat?</p>
<p>drakon schrieb:</p>
<blockquote>
<p>[...]Ich habe kurz mal im Standard gesucht, aber auf die schnell nix gefunden, was gross über ::end etwas aussagt.[...]</p>
</blockquote>
<p>Die Beschreibung steht nich bei <code>std::vector::end()</code> , sondern bei <code>std::vector::erase()</code> :</p>
<p>ISO/IEC 14882:2003 schrieb:</p>
<blockquote>
<p>`iterator erase ( iterator position );</p>
<p>iterator erase ( iterator first, iterator last );`</p>
<p>[...]Effects: Invalidates all the iterators and references after the point of the erase.</p>
</blockquote>
<p>Da steht nicht &quot;with the exception of iterators to end&quot;.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Wenn man Zeiger nimmt kann man das ja einfach mit einem 0 Zeiger realisieren, welcher allgemeingültig ist. Wenn ein Iterator sonst über das Ziel schiesst, wird er halt auch auf 0 gesetzt und ein Vergleich klappt und ist sinnvoll.</p>
</blockquote>
<p>Das wäre dann für sowas wie <code>std::vector&lt;T&gt;::difference_type d = std::distance(vec.begin(), vec.end())</code> aber schlecht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888315</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 26 Apr 2010 07:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Mon, 26 Apr 2010 13:06:45 GMT]]></title><description><![CDATA[<p>Hi.<br />
Also doch anders. Mist.</p>
<blockquote>
<p>Btw: Wird bei dem it = this-&gt;m_vecWorker.erase(it); mit anschließendem it++ im Schleifenkopf nicht ein Element übersprungen?</p>
</blockquote>
<p>Stimmt, dass ergibt Sinn <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 />
Wie kann ich das Problem lösen? So wäre es doch korrekt oder?</p>
<pre><code class="language-cpp">for (vector&lt;Key_s*&gt;::iterator it = this-&gt;m_vecWorker.begin(); it != this-&gt;m_vecWorker.end();
; )
{
    Key_s *pKey = (*it);

    // mach was

    if (pKey-&gt;bla)
    {
        it = this-&gt;m_vecWorker.erase(it);
    }
    else
    {
        it++;
    }
}
</code></pre>
<p>Sieht aber ziemlich doof aus. Gibt es da nichts praktischeres?</p>
<p>Edit: Aber wenn ich (theoretisch) nichts lösche, bleibt .end() doch valid, oder?<br />
Edit2: Wenn ich mir das gerade noch einmal überlege, wie ein vector überhaupt von &quot;innen&quot; funktioniert, ist es ja doch eher sinnlos das Ende zwischenzuspeichern oder? Ich dachte bisher immer, dass bei jedem Aufruf der Enditerator neu berechnet wird. Aber meiner Meinung nach sollte die Funktion beim nicht löschen eines Items immer den gleichen Iterator liefern. Deshalb ist Zwischenspeichern eigentlich nicht nötig oder?</p>
<p>Gruß und Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888476</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Mon, 26 Apr 2010 13:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Mon, 26 Apr 2010 13:48:13 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Wenn end() immer das selbe liefern würde, wäre das eine ziemliche Katastrophe.</p>
<p>Einfach besipiel: implementiert einen iterator für std::vector um folgenden Code korrekt ausführen zu können:</p>
<pre><code class="language-cpp">vector::iterator i=vec.begin();
while(i!=vec.end()) {
  ++i;
}
</code></pre>
<p>Das Problem für i ist nun: wann ist das Ende erreicht? Ein simples</p>
<pre><code class="language-cpp">iterator&amp; operator++() {
  ++pointer_to_element;
}
</code></pre>
<p>reicht ja plötzlich nicht mehr. man muss ein:</p>
<pre><code class="language-cpp">iterator&amp; operator++() {
  ++pointer_to_element;
  if(pointer_to_element &gt;= vec.begin()+vec.size()) *this=vec.end();
}
</code></pre>
<p>von komplexeren containern mal komplett abgesehen <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>
</blockquote>
<p>Naja, man könnte es auch im operator == regeln. Ob das in den meisten Programmen nen Geschwindigkeits-Vorteil bringt ist natürlich wieder eine andere Sache.</p>
<p>Im Übrigen teile ich deine Meinung, es wäre für std::vector ne ziemliche Katastrophe (bei std::list hingegen bietet es sich ja geradezu an).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888491</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 26 Apr 2010 13:48:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Mon, 26 Apr 2010 14:02:49 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>...<br />
Wie kann ich das Problem lösen? ...<br />
...</p>
</blockquote>
<p>Ich würde dafür <a href="http://www.cplusplus.com/reference/algorithm/remove_if/" rel="nofollow">remove_if()</a> nehmen - dann ist's ein &quot;Einzeiler&quot;(OK, leicht geschummelt <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="😉"
    /> ).<br />
Dazu muss man natürlich eine geeignete &quot;predicate function&quot; schreiben, aber das ist nicht wirklich schwer.<br />
... ach ja: Rückgabenwert dann einfach in <a href="http://www.cplusplus.com/reference/stl/vector/erase/" rel="nofollow">vector::erase()</a> einsetzen und schon klappt's.</p>
<p>(ungetestet)</p>
<pre><code class="language-cpp">bool IsBla(Key_s* const&amp; i) { return (i-&gt;bla()); }

....
m_vecWorker.erase(remove_if(m_vecWorker.begin(), m_vecWorker.end(), IsBla), m_vecWorker.end());
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888492</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 26 Apr 2010 14:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wird vector.end() ungültig bei vector.erase()? on Mon, 26 Apr 2010 18:42:00 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ok, stimmt. Hatte ich mich extrem geirrt. Hab da einiges durcheinander gebracht. Danke für den Auszug aus dem Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1888630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1888630</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 26 Apr 2010 18:42:00 GMT</pubDate></item></channel></rss>