<?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[list in stl löschen]]></title><description><![CDATA[<p>hallo,<br />
ich habe mal eine grundlegende frage zum Löschen von elementen in einer list aus der stl.</p>
<p>Ich habe als beispiel eine liste aus zeigern angelegt.</p>
<p>Wenn ich nun die liste mit der funktion clear() lösche, werden dann auch alle elemente gelöscht, auch wenn ich nur einen Zeiger auf diese elemente zeigen habe?</p>
<p>in diesem beispiel ist eben nur gezeigt wie es mit der anbindung eines normales objektes geht.</p>
<p>hier die clear funktion:</p>
<p><a href="http://www.cplusplus.com/reference/stl/list/clear/" rel="nofollow">http://www.cplusplus.com/reference/stl/list/clear/</a></p>
<p>gruß anno</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239865/list-in-stl-löschen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 06:25:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239865.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Apr 2009 21:53:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to list in stl löschen on Tue, 28 Apr 2009 21:53:45 GMT]]></title><description><![CDATA[<p>hallo,<br />
ich habe mal eine grundlegende frage zum Löschen von elementen in einer list aus der stl.</p>
<p>Ich habe als beispiel eine liste aus zeigern angelegt.</p>
<p>Wenn ich nun die liste mit der funktion clear() lösche, werden dann auch alle elemente gelöscht, auch wenn ich nur einen Zeiger auf diese elemente zeigen habe?</p>
<p>in diesem beispiel ist eben nur gezeigt wie es mit der anbindung eines normales objektes geht.</p>
<p>hier die clear funktion:</p>
<p><a href="http://www.cplusplus.com/reference/stl/list/clear/" rel="nofollow">http://www.cplusplus.com/reference/stl/list/clear/</a></p>
<p>gruß anno</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702898</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 28 Apr 2009 21:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Tue, 28 Apr 2009 22:03:03 GMT]]></title><description><![CDATA[<p>anno schrieb:</p>
<blockquote>
<p>hallo,<br />
ich habe mal eine grundlegende frage zum Löschen von elementen in einer list aus der stl.</p>
<p>Ich habe als beispiel eine liste aus zeigern angelegt.</p>
<p>Wenn ich nun die liste mit der funktion clear() lösche, werden dann auch alle elemente gelöscht, auch wenn ich nur einen Zeiger auf diese elemente zeigen habe?</p>
</blockquote>
<p>Nein - es waere auch unsinnig. Die Zeiger sind ein Reference wo ein Object steht. Du koennest mehrere solcher Listen haben, die z. B. Teilmengen oder sortierte Mengen besitzen. Diese muessen zerstoert oder neu aufgebaut werden koennen, ohne die urspruenglichen Daten zu veraendern - z.B. zum Zwischenspeichern eines Suchergebnisses.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702903</guid><dc:creator><![CDATA[hartmut1164]]></dc:creator><pubDate>Tue, 28 Apr 2009 22:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 07:18:58 GMT]]></title><description><![CDATA[<p>also müsste ich dann trotzdem alle elemente der liste durhcluafen und mit &quot;delete&quot; jedes elemente einzeln löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702980</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Wed, 29 Apr 2009 07:18:58 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 07:20:46 GMT]]></title><description><![CDATA[<p>anno schrieb:</p>
<blockquote>
<p>also müsste ich dann trotzdem alle elemente der liste durhcluafen und mit &quot;delete&quot; jedes elemente einzeln löschen.</p>
</blockquote>
<p>Ja.<br />
Oder Smart-Pointer verwenden.<br />
Oder boost::ptr_list verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702983</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Apr 2009 07:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 07:25:42 GMT]]></title><description><![CDATA[<p>anno schrieb:</p>
<blockquote>
<p>also müsste ich dann trotzdem alle elemente der liste durhcluafen und mit &quot;delete&quot; jedes elemente einzeln löschen.</p>
</blockquote>
<p>Wenn Du alle Elemente der Liste mit dem new-operator aufgebaut hast schon, aber Du kannst mehr als zwei Listen haben:</p>
<pre><code class="language-cpp">list &lt;MyClass  &gt; MyData;
list &lt;MyClass *&gt; MyReferences_0;
list &lt;MyClass *&gt; MyReferences_1;
list &lt;MyClass *&gt; MyReferences_2;
</code></pre>
<p>MyReferences enthaelt nur die Pointer auf Elemente von MyData. Wenn Du MyData loechst, loechst Du alle Objecte vom Type MyClass in der Liste, wenn Du MyReferences_n loechst, loechst nur die Reference darauf ohne die Daten selber anzupacken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702986</guid><dc:creator><![CDATA[hartmut1164]]></dc:creator><pubDate>Wed, 29 Apr 2009 07:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 07:39:18 GMT]]></title><description><![CDATA[<p>ja ok das ist klar, in meinem fall habe ich dann nur eine liste.</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702990</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Wed, 29 Apr 2009 07:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 10:02:34 GMT]]></title><description><![CDATA[<p>anno schrieb:</p>
<blockquote>
<p>ja ok das ist klar, in meinem fall habe ich dann nur eine liste.</p>
<p>danke</p>
</blockquote>
<p>Das Problem waere z. B. folgendes (Liste von 4 Elementen):</p>
<pre><code class="language-cpp">list &lt;MyClass *&gt; MyDataList;

for (int iLoop = 0; iLoop &lt; 4; iLoop++)
    MyDataList.push_back (NULL);

// Jetzt hast Du eine Liste voller NULL-Pointer
// die jetzt aufgefuellt wird

for (list&lt;MyClass *&gt;::iterator iLoop; iLoop != mylist.end(); iLoop++)
    MyDataList [iLoop] = new MyDataList;

// Wenn Du jetzt einfach das machst:

delete MyDataList; //ERROR

// Beleiben die mit dem new-Operator geschaffen Objecte irgentwo im Heap stehen
// ohne das Du weisst wo sie stehen
</code></pre>
<p>Du kannst das auch sinnvoll ausnutzen:</p>
<pre><code class="language-cpp">list &lt;MyClass&gt;   MyDataList;
list &lt;MyClass *&gt; TempSearchResults;

FillListData (MyDataList);

// Jetzt stehen Daten in der Liste

SearchListFor_ABC (MyDataList, TempSearchResults);
ShowSearchList (TempSearchResults);

TempSearchResults.empty ();

SearchListFor_CDE (MyDataList, TempSearchResults);
ShowSearchList (TempSearchResults);

// etc.
</code></pre>
<p>Du kannst also eine Referenzliste haben, diese beliebig manipulieren oder zerstoeren ohne die Daten selber anzupacken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703033</guid><dc:creator><![CDATA[hartmut1164]]></dc:creator><pubDate>Wed, 29 Apr 2009 10:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 13:56:38 GMT]]></title><description><![CDATA[<p>Oder wie eingangs schon erwähnt boost::ptr_list die übernimmt das aufräumen für dich wenn mit new erzeugt Elemente einhängst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703170</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 29 Apr 2009 13:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to list in stl löschen on Wed, 29 Apr 2009 14:09:34 GMT]]></title><description><![CDATA[<p>Oder einfach keine Zeiger, sondern direkt Klasseninstanzen in der Liste speichern. Meistens reicht das auch, wenn man nicht gerade Polymorphie benötigt oder gewisse Abhängigkeiten in Headern vermeiden will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703180</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 29 Apr 2009 14:09:34 GMT</pubDate></item></channel></rss>