<?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[STL Container -&amp;gt; Erase..]]></title><description><![CDATA[<p>Im folgenden Code wird das Objekte auch wieder ordnugnsgemäss gelöscht:</p>
<pre><code class="language-cpp">std::list&lt;CAllocNodeEx&gt; test;
test.push_back(CAllocNodeEx(&quot;TEST&quot;));
std::list&lt;CAllocNodeEx&gt;::iterator it =test.begin();
std::cout &lt;&lt; (*tt).GetName().c_str() &lt;&lt; std::endl;
test.erase(it);
</code></pre>
<p>in diesem Fall muss ich beim löschen ja das objekt manuel zerstören</p>
<pre><code class="language-cpp">std::list&lt;CAllocNodeEx*&gt; test;
test.push_back(new CAllocNodeEx(&quot;TEST&quot;));
std::list&lt;CAllocNodeEx*&gt;::iterator it =test.begin();
std::cout &lt;&lt; (*tt)-&gt;GetName().c_str() &lt;&lt; std::endl;
delete (*it); // extra delete aufrufen
test.erase(it);
</code></pre>
<p>komm ich da nich drumrum? da CAllocNodeEx eine Abstrakte basisklasse ist, muss ich das wohl so machen? ich frage mich dann wie es bei &quot;clear()&quot; aussieht, damuss ich ja erst jedes objekt iterieren und zerstören doer nich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191752/stl-container-gt-erase</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 04:35:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191752.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Sep 2007 08:17:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL Container -&amp;gt; Erase.. on Thu, 06 Sep 2007 08:17:42 GMT]]></title><description><![CDATA[<p>Im folgenden Code wird das Objekte auch wieder ordnugnsgemäss gelöscht:</p>
<pre><code class="language-cpp">std::list&lt;CAllocNodeEx&gt; test;
test.push_back(CAllocNodeEx(&quot;TEST&quot;));
std::list&lt;CAllocNodeEx&gt;::iterator it =test.begin();
std::cout &lt;&lt; (*tt).GetName().c_str() &lt;&lt; std::endl;
test.erase(it);
</code></pre>
<p>in diesem Fall muss ich beim löschen ja das objekt manuel zerstören</p>
<pre><code class="language-cpp">std::list&lt;CAllocNodeEx*&gt; test;
test.push_back(new CAllocNodeEx(&quot;TEST&quot;));
std::list&lt;CAllocNodeEx*&gt;::iterator it =test.begin();
std::cout &lt;&lt; (*tt)-&gt;GetName().c_str() &lt;&lt; std::endl;
delete (*it); // extra delete aufrufen
test.erase(it);
</code></pre>
<p>komm ich da nich drumrum? da CAllocNodeEx eine Abstrakte basisklasse ist, muss ich das wohl so machen? ich frage mich dann wie es bei &quot;clear()&quot; aussieht, damuss ich ja erst jedes objekt iterieren und zerstören doer nich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359958</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 06 Sep 2007 08:17:42 GMT</pubDate></item><item><title><![CDATA[Reply to STL Container -&amp;gt; Erase.. on Thu, 06 Sep 2007 08:26:21 GMT]]></title><description><![CDATA[<p>Für solche Probleme gibt es smart pointer!<br />
Z.B. boost::shared_ptr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359965</guid><dc:creator><![CDATA[Horst Baldowin III Sr.]]></dc:creator><pubDate>Thu, 06 Sep 2007 08:26:21 GMT</pubDate></item><item><title><![CDATA[Reply to STL Container -&amp;gt; Erase.. on Thu, 06 Sep 2007 08:34:52 GMT]]></title><description><![CDATA[<p>jo stimmt;)</p>
<p>nächstes Problem: Wenn ich elemente von hinten nach vorne löschen will, nehm ich ich den reverse_iterator... Das Problem ist aber das der compiler bei erase mekkert. :</p>
<pre><code class="language-cpp">std::list&lt;CAllocNodeEx&gt;::reverse_iterator tt =test.rbegin();
std::cout &lt;&lt; (*tt).GetName().c_str() &lt;&lt; std::endl;
test.erase(tt);
</code></pre>
<p>fehler:<br />
c:\test\TreeStructure\AllocationEx.h(86): error C2664: 'std::list&lt;_Ty&gt;::iterator std::list&lt;_Ty&gt;::erase(std::list&lt;_Ty&gt;::iterator)' : cannot convert parameter 1 from 'std::list&lt;_Ty&gt;::reverse_iterator' to 'std::list&lt;_Ty&gt;::iterator'<br />
with<br />
[<br />
_Ty=CAllocNodeEx<br />
]<br />
and<br />
[<br />
_Ty=CAllocNodeEx<br />
]<br />
and<br />
[<br />
_Ty=CAllocNodeEx<br />
]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359973</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 06 Sep 2007 08:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to STL Container -&amp;gt; Erase.. on Thu, 06 Sep 2007 08:39:25 GMT]]></title><description><![CDATA[<p>Erase erwartet nunmal einen list::terator, und keinen reverse_iterator<a href="list::iterator" rel="nofollow">list::iterator</a>. Das sind verschiedene Typen, die sich nicht konvertieren lassen.</p>
<p>Auf den zugrundeliegenden Iterator greifst Du mit tt.base() zu. Aber Du weißt natürlich, dass wenn Du einen Iterator löscht, eben dieser nicht mehr gültig ist, um weiterzuiterieren, gell? <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/1359980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359980</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 06 Sep 2007 08:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to STL Container -&amp;gt; Erase.. on Thu, 06 Sep 2007 10:01:52 GMT]]></title><description><![CDATA[<p>ao halt;</p>
<pre><code class="language-cpp">l=0;
			for(tcl::tree&lt;CAllocNodeEx*&gt;::reverse_iterator it2= it.node()-&gt;rbegin(); l &lt; 10 ; it2= it.node()-&gt;rbegin(), ++l){
				delete *(--it2.base());
				it.node()-&gt;erase(--it2.base());
			}
</code></pre>
<p><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/1360072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360072</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 06 Sep 2007 10:01:52 GMT</pubDate></item></channel></rss>