<?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[Elemente eines Vektors löschen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Wenn ich ein bst. Element(ein Zeiger) eines Vektors(z.B. vector&lt;A*&gt;) löschen möchte, muss ich dann zuerst ein delete machen und dann ein erase bzw. pop(bzw. geht es auch in einem Schritt?)?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218592/elemente-eines-vektors-löschen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 00:37:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218592.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Jul 2008 17:41:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 17:41:42 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Wenn ich ein bst. Element(ein Zeiger) eines Vektors(z.B. vector&lt;A*&gt;) löschen möchte, muss ich dann zuerst ein delete machen und dann ein erase bzw. pop(bzw. geht es auch in einem Schritt?)?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551868</guid><dc:creator><![CDATA[dosunmu]]></dc:creator><pubDate>Tue, 22 Jul 2008 17:41:42 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 18:00:07 GMT]]></title><description><![CDATA[<p>Nein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551879</guid><dc:creator><![CDATA[-.]]></dc:creator><pubDate>Tue, 22 Jul 2008 18:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 18:52:51 GMT]]></title><description><![CDATA[<p>Und wie gehört es dann bitte richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551918</guid><dc:creator><![CDATA[dosunmu]]></dc:creator><pubDate>Tue, 22 Jul 2008 18:52:51 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 19:03:55 GMT]]></title><description><![CDATA[<p>Aus einem Vector solltest du sowieso - wenn überhaupt - nur selten Elemente, die nicht am Ende sind löschen. Wenn du diese Eigenschaft öfter benötigst, solltest du einen anderen Container verwenden (std::deque oder std::list).</p>
<p>Was spricht gegen einen:</p>
<pre><code class="language-cpp">std::vector &lt;A&gt; v;
</code></pre>
<p>Der räumt schon von selbst auf. Ein std::vector &lt;A*&gt;, dem du mit new erstellte Objekte hinzufügst, ist imho auch nicht exception-safe. Da müsstest du Smart Pointer benutzen oder die Lösung von Boost <a href="http://www.boost.org/doc/libs/1_35_0/libs/ptr_container/doc/ptr_container.html" rel="nofollow">Pointer Container</a></p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551926</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Tue, 22 Jul 2008 19:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 19:13:20 GMT]]></title><description><![CDATA[<p>bei einem std::vector&lt;A*&gt; ist die reihenfolge in der du delete und erase ausführst egal. der vector kümmert sich nicht darum, wie du deine A* verwaltet hast und entfernt nur einen zeiger aus seinem bestand, bei dem völlig egal ist, wo er hinzeigt. delete auf der anderen seite gibt nur den speicher frei und kümmert sich nicht darum, was mit den zeigern passiert.<br />
sauberer ist natürlich die variante erst aus dem vector entfernen und dann löschen, da man dann keinen datenmüll in dem vector liegen hat.</p>
<p>aber wie Don06 schon schrieb: überlegt dir genau, ob ein vector&lt;A*&gt; das ist, was du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551932</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Tue, 22 Jul 2008 19:13:20 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 19:31:47 GMT]]></title><description><![CDATA[<p>Okay, danke.</p>
<blockquote>
<p>Aus einem Vector solltest du sowieso - wenn überhaupt - nur selten Elemente, die nicht am Ende sind löschen.</p>
</blockquote>
<p>Wieso das? Nimmt jetzt nicht automatisch, wenn ich z.B. das 2te Element im Vector lösche, das 3te Element den Platz ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551945</guid><dc:creator><![CDATA[dosunmu]]></dc:creator><pubDate>Tue, 22 Jul 2008 19:31:47 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 19:38:56 GMT]]></title><description><![CDATA[<p>dosunmu schrieb:</p>
<blockquote>
<blockquote>
<p>Aus einem Vector solltest du sowieso - wenn überhaupt - nur selten Elemente, die nicht am Ende sind löschen.</p>
</blockquote>
<p>Wieso das? Nimmt jetzt nicht automatisch, wenn ich z.B. das 2te Element im Vector lösche, das 3te Element den Platz ein?</p>
</blockquote>
<p>Das Dritte wird auf den Platz des Zweiten kopiert, das Vierte auf das Dritte, das Fünfte auf das Vierte, das Sechste auf das Fünfte usw. usf.<br />
Das ist ein enormer Aufwand. Laufzeit O(n).</p>
<p>Bei einer std::list werden einfach die Elemente umgehängt. Vom Ersten kommt man dann direkt zum Dritten und umgekehrt. Das Zweite wird einfach aus der Kette herausgenommen. Laufzeit O(1).</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551948</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 22 Jul 2008 19:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Tue, 22 Jul 2008 21:41:28 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Bei einer std::list werden einfach die Elemente umgehängt. Vom Ersten kommt man dann direkt zum Dritten und umgekehrt. Das Zweite wird einfach aus der Kette herausgenommen. Laufzeit O(1).</p>
</blockquote>
<p>Jedoch geht diese Schnelligkeit auf Kosten des Random Access. Je nach Situation eignet sich deshalb ein anderer Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552011</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 22 Jul 2008 21:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Wed, 23 Jul 2008 00:19:05 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<p>Was spricht gegen einen:</p>
<pre><code class="language-cpp">std::vector &lt;A&gt; v;
</code></pre>
</blockquote>
<p>Also es soll ja Klassen geben, die bestimmte Pointer beinhalten - und den Speicherbereich im DTor löschen... Da fällt mir sofort so was ein, wie HANDLEs, die man noch mal braucht, um zu sagen ob da schon iwas abgelaufen ist oder nicht...</p>
<p>Oder wie machst du so was?</p>
<p>Aber da sollte wahrscheinlich auch so was, wie std::auto_ptr reichen ^^</p>
<p>bb</p>
<p>//edit: ne, ich glaub, ich hatte da nen denkfehler - es muss nen purer ptr sein glaube ich... ist schon spät ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552049</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 23 Jul 2008 00:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Wed, 23 Jul 2008 07:20:27 GMT]]></title><description><![CDATA[<p>auto_ptr kann man nicht in Container packen. Falls man einen Smartpointer braucht wäre evtl. boost::shared_ptr die richtige Wahl. Noch bessert wäre da aber vielleicht einer der boost::ptr_container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552145</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 23 Jul 2008 07:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Wed, 23 Jul 2008 09:16:07 GMT]]></title><description><![CDATA[<p>Ich hab ehrlich gesagt noch nie einen Container mit Zeigern gefüllt... Wozu braucht man das? Der Sinn eines Containers ist ja gerade, dass man die Speicherverwaltung nicht selber handzuhaben braucht, was durch eigene Pointer wieder zunichte gemacht würde. Und wenn man Klassen hat, die intern Zeiger besitzen und diese auch ordentlich wieder freigeben, hat man auch kein Problem, diese als Elemente in Containern zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552228</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Jul 2008 09:16:07 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Wed, 23 Jul 2008 09:33:39 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wozu braucht man das?</p>
</blockquote>
<p>Ein Container von polymorphen Objekten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552238</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Wed, 23 Jul 2008 09:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente eines Vektors löschen on Wed, 23 Jul 2008 09:48:09 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Ein Container von polymorphen Objekten.</p>
</blockquote>
<p>Okay, das hat mich jetzt überzeugt. Ich bin eben selber noch nicht in die Situation gekommen, da ich noch nicht sehr viel mit Polymorphie zu tun hatte, und deshalb hab ich daran gar nicht gedacht <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/1552244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552244</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Jul 2008 09:48:09 GMT</pubDate></item></channel></rss>