<?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 Inhalt löschen]]></title><description><![CDATA[<p>Moin moin, mein Problem ist wahrscheinlich sehr einfacher Art...^^</p>
<p>Naja, jedenfalls - ich habe einen Vektor, welcher nur Objekte meiner Mobile Klasse aufnehmen kann und diese möchte ich später nach Benutzung auch wieder löschen.</p>
<pre><code class="language-cpp">vector&lt;Mobile&gt; mobiles;

// Befuellung mit:

Mobile *myMobile1 = new Mobile(&quot;Samsung&quot;, &quot;S2&quot;, 123456);
// ...

for(int i = 0; i &lt; mobiles.size(); i++) {
    delete mobiles.at(i);

}
</code></pre>
<p>Und diese For-Schleife geht halt nicht - mobiles ist rot unterkringelt mit dem Text:</p>
<p>&quot;std::vector&lt;Mobile&gt;, std::allocator&lt;Mobile&gt;&gt; mobiles<br />
Error: Der Ausdruck muss einen Zeiger- oder Handletyp aufweisen.&quot;</p>
<p>Kann mir da wer weiterhelfen?</p>
<p>Gruß Zel <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>
<p>Edith:</p>
<p>Ziel ist es ja, meine Ressourcen, die ich für jede Instanz der Klasse Mobile benötige, wieder freizugeben - das ist doch auch erreicht, wenn ich einfach den Inhalt des Vektors mittels</p>
<pre><code class="language-cpp">mobiles.clear();
</code></pre>
<p>lösche oder?</p>
<p>Wenn ja...muss an der Zeit liegen, dass ich das erst nach meinem Post bemerkt habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304517/vector-inhalt-löschen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 18:45:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304517.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Jun 2012 02:04:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 02:12:22 GMT]]></title><description><![CDATA[<p>Moin moin, mein Problem ist wahrscheinlich sehr einfacher Art...^^</p>
<p>Naja, jedenfalls - ich habe einen Vektor, welcher nur Objekte meiner Mobile Klasse aufnehmen kann und diese möchte ich später nach Benutzung auch wieder löschen.</p>
<pre><code class="language-cpp">vector&lt;Mobile&gt; mobiles;

// Befuellung mit:

Mobile *myMobile1 = new Mobile(&quot;Samsung&quot;, &quot;S2&quot;, 123456);
// ...

for(int i = 0; i &lt; mobiles.size(); i++) {
    delete mobiles.at(i);

}
</code></pre>
<p>Und diese For-Schleife geht halt nicht - mobiles ist rot unterkringelt mit dem Text:</p>
<p>&quot;std::vector&lt;Mobile&gt;, std::allocator&lt;Mobile&gt;&gt; mobiles<br />
Error: Der Ausdruck muss einen Zeiger- oder Handletyp aufweisen.&quot;</p>
<p>Kann mir da wer weiterhelfen?</p>
<p>Gruß Zel <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>
<p>Edith:</p>
<p>Ziel ist es ja, meine Ressourcen, die ich für jede Instanz der Klasse Mobile benötige, wieder freizugeben - das ist doch auch erreicht, wenn ich einfach den Inhalt des Vektors mittels</p>
<pre><code class="language-cpp">mobiles.clear();
</code></pre>
<p>lösche oder?</p>
<p>Wenn ja...muss an der Zeit liegen, dass ich das erst nach meinem Post bemerkt habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220875</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Fri, 08 Jun 2012 02:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 03:00:42 GMT]]></title><description><![CDATA[<p>Was du mit new anlegst, musst du mit delete wieder freigeben. Was du nicht mit new anlegst, musst du im Allgemeinen auch nicht mit delete freigeben. (Ausnahmen dürften dich momentan kaum interessieren)</p>
<p>Aber:</p>
<pre><code class="language-cpp">vector&lt;Mobile&gt; mobiles;
</code></pre>
<p>Das sind hier keine Zeiger auf Mobile, sondern &quot;Mobile&quot; Objekte selbst. Damit musst du sie auch nicht manuell wieder freigeben.</p>
<p>Ich wunder mich aber, warum dein Beispielcode ein new drinnen stehen hat. Woher kommt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220879</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 08 Jun 2012 03:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 07:02:06 GMT]]></title><description><![CDATA[<p>nimm lieber einen shared_ptr, dann wird delete automatisch aufgerufen, wenn keine Referenz mehr auf das Objekt existiert. Dann reicht vector.clear() anstelle deiner Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220902</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 08 Jun 2012 07:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 07:47:26 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>nimm lieber einen shared_ptr, dann wird delete automatisch aufgerufen, wenn keine Referenz mehr auf das Objekt existiert. Dann reicht vector.clear() anstelle deiner Schleife.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Warum wird überall sofort shared_ptr empfohlen? shared Ownership ist ein Ausnahmefall, defaultmäßig nimmt man unique_ptr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220912</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 08 Jun 2012 07:47:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 08:05:08 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Warum wird überall sofort shared_ptr empfohlen? shared Ownership ist ein Ausnahmefall, defaultmäßig nimmt man unique_ptr.</p>
</blockquote>
<p>Genau. Oder gleich Boosts spezialisierte Pointer-Container, dann fällt auch die ständige Dereferenzierung weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220918</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 08 Jun 2012 08:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 08:59:33 GMT]]></title><description><![CDATA[<p>Mach das mal lieber so:</p>
<pre><code class="language-cpp">vector&lt;Mobile&gt; mobiles;

// Befuellung mit:

Mobile myMobile1(&quot;Samsung&quot;, &quot;S2&quot;, 123456);
mobiles.push_back(myMobile1);
// ...
</code></pre>
<p>dann brauchst Du kein delete und kannst den Vektor auch mit</p>
<pre><code class="language-cpp">mobiles.clear();
</code></pre>
<p>problemlos wieder löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220933</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 08 Jun 2012 08:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 09:53:19 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>nimm lieber einen shared_ptr, dann wird delete automatisch aufgerufen, wenn keine Referenz mehr auf das Objekt existiert. Dann reicht vector.clear() anstelle deiner Schleife.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Warum wird überall sofort shared_ptr empfohlen? shared Ownership ist ein Ausnahmefall, defaultmäßig nimmt man unique_ptr.</p>
</blockquote>
<p>Vermutlich, weils auch Leute gibt, die sich nicht immer den modernsten Compiler aussuchen können und daher nicht auf unique_ptr zurückgreifen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220946</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 08 Jun 2012 09:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 09:54:47 GMT]]></title><description><![CDATA[<p>Okay, ich mach das dann mal ohne new, erscheint mir für meine Zwecke doch die einfachste Lösung zu sein^^</p>
<p>Vielen Dank für die Antworten <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/2220947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220947</guid><dc:creator><![CDATA[Zel2491]]></dc:creator><pubDate>Fri, 08 Jun 2012 09:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 10:28:45 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Vermutlich, weils auch Leute gibt, die sich nicht immer den modernsten Compiler aussuchen können und daher nicht auf unique_ptr zurückgreifen können.</p>
</blockquote>
<p>Dann gibts aber auch keinen <code>std::shared_ptr</code> . Und wenn man Boost verwendet, kann man auch <code>boost::scoped_ptr</code> (ausserhalb von Containern) oder <code>boost::ptr_vector</code> nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220954</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 08 Jun 2012 10:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Fri, 08 Jun 2012 16:38:25 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Vermutlich, weils auch Leute gibt, die sich nicht immer den modernsten Compiler aussuchen können und daher nicht auf unique_ptr zurückgreifen können.</p>
</blockquote>
<p>Dann gibts aber auch keinen <code>std::shared_ptr</code> . Und wenn man Boost verwendet, kann man auch <code>boost::scoped_ptr</code> (ausserhalb von Containern) oder <code>boost::ptr_vector</code> nehmen.</p>
</blockquote>
<p>Compiler, die nicht einmal TR1 unterstützen, sind aber eigentlich auch schon wieder eher selten. Und da haste dann shared_ptr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221075</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 08 Jun 2012 16:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vector Inhalt löschen on Sat, 09 Jun 2012 15:12:25 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Compiler, die nicht einmal TR1 unterstützen, sind aber eigentlich auch schon wieder eher selten. Und da haste dann shared_ptr.</p>
</blockquote>
<p>Bei Visual Studio 2008 musste ich damals TR1 mit dem Service Pack 1 nachrüsten, also nehme ich an, dass sowohl 2008 ohne SP als auch frühere Versionen keinen TR1 unterstützen. Spätere Versionen (ab 2010) enthalten aber wieder den C++11 <code>std::shared_ptr</code> .</p>
<p>Keine Ahnung, wies mit g++ genau aussieht. Ich mag mich nur an einige Bugs im TR1 erinnern (besonders Random), <code>shared_ptr</code> funktionierte glaube ich gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2221382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2221382</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 09 Jun 2012 15:12:25 GMT</pubDate></item></channel></rss>