<?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-Klasse]]></title><description><![CDATA[<p>Hallo C++-Gemeinde,</p>
<p>wenn ich auf einen Vector die &quot;clear&quot;-Operation aufrufe. Werden dann automatisch alle Objekte im Vektor zerstört und der Speicherplatz freigegeben, oder werden lediglich die Zeiger vom Vektor auf die Objekte entfernt?</p>
<p>Schonmal besten Dank</p>
<p>Gruß<br />
Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149210/vector-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 05:22:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149210.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Jun 2006 13:26:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector-Klasse on Sat, 03 Jun 2006 13:26:46 GMT]]></title><description><![CDATA[<p>Hallo C++-Gemeinde,</p>
<p>wenn ich auf einen Vector die &quot;clear&quot;-Operation aufrufe. Werden dann automatisch alle Objekte im Vektor zerstört und der Speicherplatz freigegeben, oder werden lediglich die Zeiger vom Vektor auf die Objekte entfernt?</p>
<p>Schonmal besten Dank</p>
<p>Gruß<br />
Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070685</guid><dc:creator><![CDATA[JoKl]]></dc:creator><pubDate>Sat, 03 Jun 2006 13:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Vector-Klasse on Sat, 03 Jun 2006 13:43:38 GMT]]></title><description><![CDATA[<p>Wenn man .clear() aufruft, werden alle Elemente gelöscht. D.h. es werden die Standartdestruktoren dafür aufgerufen. Im Fall primitiver Typen, wie z.B. int, double usw. - kein Problem. Wenn der Typ eine STD-Klasse ist, z.B. string, bitset usw - auch kein Problem, denn sie besitzen schöne Destruktoren.<br />
Wenn der Typ ein Zeiger ist, dann wirst du ein Problem haben, denn die Destruktorfunktion vom Zeiger ist wie bei den primitiven Typen.<br />
Es gibt 2 Möglichkeiten:</p>
<pre><code class="language-cpp">for(std::vector&lt;T*&gt;::iterator it = v.begin(); it != v.end(); ++it)
    delete *it;
v.clear();//fakultativ, sogar auch doof!
</code></pre>
<p>Man kann auch clevere Zeiger benutzen - wie z.B. shared_ptr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070693</guid><dc:creator><![CDATA[khalderon]]></dc:creator><pubDate>Sat, 03 Jun 2006 13:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vector-Klasse on Sat, 03 Jun 2006 13:50:51 GMT]]></title><description><![CDATA[<p>Ich hoffe, ich habe das jetzt richtig verstanden.</p>
<p>Ich speichere an sich in dem Vektor Objekte. Das heißt ja im Prinzip, dass in der Liste aber nur &quot;Zeiger auf Objekte&quot; angelegt werden, oder?</p>
<p>Deshalb verwirrt mich deine Aussage.</p>
<p>zum Beispiel:</p>
<pre><code class="language-cpp">class Klassenname{
...
}

...
vector&lt;Klassenname&gt; vectorName;
</code></pre>
<p>Wenn ich dich richtig verstehe, werden bei dieser Konstruktion die Objekte definitiv freigegeben, wenn ich clear aufrufe, richtig?</p>
<p>Auf jeden Fall vielen Dank für deine schnelle Antwort</p>
<p>Gruß<br />
Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070700</guid><dc:creator><![CDATA[JoKl]]></dc:creator><pubDate>Sat, 03 Jun 2006 13:50:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vector-Klasse on Sat, 03 Jun 2006 13:57:37 GMT]]></title><description><![CDATA[<p>JoKl, ja - genau. Dein Beispiel ist ganz in Ordnung. Wenn du .clear() aufrufst, dann wird die Destruktorfunktion deiner Klasse aufgerufen - für jedes eingefügte Element. Wenn &quot;Klassenname&quot; nur primitive/STD Datentypen enthält, dann brauchst du sogar überhaupt keine Destruktorfunktion zu schreiben!</p>
<blockquote>
<p>Das heißt ja im Prinzip, dass in der Liste aber nur &quot;Zeiger auf Objekte&quot; angelegt werden, oder?</p>
</blockquote>
<p>Im Prinzip werden Kopien von den Objekten gespeicher. Wo siehst du hier Zeiger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070704</guid><dc:creator><![CDATA[khalderon]]></dc:creator><pubDate>Sat, 03 Jun 2006 13:57:37 GMT</pubDate></item></channel></rss>