<?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.clear() was wird aufgeräumt?]]></title><description><![CDATA[<p>Also ich bin gerade so am Überlegen, inwiefern denn bei diesem Konstrukt</p>
<pre><code class="language-cpp">vector&lt;myClass*&gt; liste;
</code></pre>
<p>sich ein clear auf die Listeninhalte auswirkt.<br />
In der Doku die ich bisher gefunden habe steht leider nicht besonders viel dazu.<br />
Aaalso. werden die Elemente bei .clear() wirklich gelöscht oder nur deren Zuordnung zum Vector. Immerhin müsste man sie ja im letzteren Falle selber mit delete entfernen..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145032/vector-clear-was-wird-aufgeräumt</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 20:30:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145032.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Apr 2006 10:30:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 10:30:24 GMT]]></title><description><![CDATA[<p>Also ich bin gerade so am Überlegen, inwiefern denn bei diesem Konstrukt</p>
<pre><code class="language-cpp">vector&lt;myClass*&gt; liste;
</code></pre>
<p>sich ein clear auf die Listeninhalte auswirkt.<br />
In der Doku die ich bisher gefunden habe steht leider nicht besonders viel dazu.<br />
Aaalso. werden die Elemente bei .clear() wirklich gelöscht oder nur deren Zuordnung zum Vector. Immerhin müsste man sie ja im letzteren Falle selber mit delete entfernen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043844</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Mon, 24 Apr 2006 10:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 10:35:07 GMT]]></title><description><![CDATA[<p>DocJunioR schrieb:</p>
<blockquote>
<p>Aaalso. werden die Elemente bei .clear() wirklich gelöscht oder nur deren Zuordnung zum Vector.</p>
</blockquote>
<p>Clear löscht die Elemente wirklich. Aber in deinem Fall sind die Elemente Zeiger. Die Zeiger werden gelöscht, nicht das, worauf sie möglicherweise zeigen.</p>
<p>Eine &quot;Zuordnung&quot; gibt es nicht, der Vector besitzt seine Elemente.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043849</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Apr 2006 10:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 10:36:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Hier wird kein delete aufgerufen. Das mußt du schon selber machen. Eine Alternative wäre boost::ptr_vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043850</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 24 Apr 2006 10:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 10:40:32 GMT]]></title><description><![CDATA[<p>Aahja, gut zu wissen.<br />
schankedön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043853</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Mon, 24 Apr 2006 10:40:32 GMT</pubDate></item><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 10:46:17 GMT]]></title><description><![CDATA[<p>die container bei der STL loeschen prinzipiell nur was sie selbst anlegen.<br />
Deswegen gibt es ja auch fuer die datenklassen die Anforderung, das sie Copyconstruierbar sind .... also fuer dein T ein<br />
T c(i);<br />
oder T * pr = new(i);<br />
oder wie der speichermanager intern auch immer funktioniert ....</p>
<p>funktionieren muss.</p>
<p>Alle plain old datatypes koennen das, Zeiger damit natuerlich auch.</p>
<p>Auf was der zeiger zeigt, will der container hingegen nicht interpretieren wollen. Deshalb fasst er es auch mit nem delete nicht an ...</p>
<p>also ein</p>
<pre><code class="language-cpp">std::vector&lt;Myclass *&gt; mptrList;

Myclass var; 

mptrList.insert(&amp;var); 
mptrlist.clear();
</code></pre>
<p>funktioniert auch ohne segmentation fault ^^<br />
Ist auch gut so, das macht die stl viel universeller anwendbar ...<br />
Das aufraeumen selber implementieren zu muessen ist nur nen geringer preis dafuer.<br />
BTW die QT hat das autodelete auch wieder aus ihren containern rausgenommen ...</p>
<p>BTW sollt man in C++ sowieso nicht so viel mit raw zeiger arbeiten ....</p>
<p>warum schiesst du deine klasseninstanzen selber auf den heap ?<br />
lass es doch lieber die stl machen, deren Speichermanager iss auch besser an den container oiptimiert, wo den speicher dann doch als zeiger reinlegst?</p>
<p>Wenn du nicht willst, das deine Addressen, also die zeiger, ungueltig werden weil sich der container neu kopiert, durch ein resize beim vetor z.b., dann nimm ne liste, und speicher im vector nur noch die adressen ....</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043858</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Mon, 24 Apr 2006 10:46:17 GMT</pubDate></item><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 10:51:28 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>warum schiesst du deine klasseninstanzen selber auf den heap ?<br />
lass es doch lieber die stl machen, deren Speichermanager iss auch besser an den container oiptimiert, wo den speicher dann doch als zeiger reinlegst?</p>
</blockquote>
<p>Da würden mir durchaus ein paar Gründe einfallen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10960">@Doc</a>: Wenn du dir sicher sein willst, daß beim clear() die Pointerdaten gelöscht werden, nimm Smart-Pointer anstelle blanker Pointer (z.B. boost::shared_btr)</p>
<p>(ganz wichtig: std::auto_ptr ist <strong>NICHT</strong> geeignet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043862</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Apr 2006 10:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to vector.clear() was wird aufgeräumt? on Mon, 24 Apr 2006 11:56:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Da würden mir durchaus ein paar Gründe einfallen.</p>
</blockquote>
<p>ja sicher, es gibt immer Gruende ^^</p>
<p>Aber eine Loesung fuer c++ auf elegante weisse aufwendigere objecte die man nicht aufn stack anlegen will/darf, zu umgehen, hasst ja schon genannt ^^</p>
<p>Geht ja nicht darum dass ein:<br />
T * ptr = new T; // oder was weiss ich fuer construktor ...<br />
immer boese ist, sondern man sollt sich halt nur Gedanken zu machen ob man das halt ned besser sauberer fehlerunanfaelliger machen kann ....<br />
und manchmal geht es eben wirklich nicht besser, und manchmal isses auch schlicht zu aufwendig ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043915</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Mon, 24 Apr 2006 11:56:35 GMT</pubDate></item></channel></rss>