<?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[Komplexe Objekte in Liste einfügen]]></title><description><![CDATA[<p>Hi,<br />
ich arbeite seit heute als Werkstudent bei einer Firma. Ich soll ein Projekt weitermachen, das, zum Glück, nur intern verwendet wird und wahrscheinlich auch nur temporär. Es wurde von einem Praktikanten begonnen.<br />
Ich bin selbst C++ Anfänger, aber folgender Code ist doch zwei mal komplett falsch:</p>
<pre><code>while(bla) {  
  MyComplexObject *o = new MyComplexObject();

  list.add(*o); // Wert wird eingefügt.
  // delete fehlt
}
</code></pre>
<p>Old-School-mäßig würde ich das so machen:</p>
<pre><code>while(bla) {  
  MyComplexObject *o = new MyComplexObject();

  list.add(o); // Adresse wird eingefügt.
}
</code></pre>
<p>Und dann später bei der Verarbeitung:</p>
<pre><code>for (std::list&lt;MyComplexObject&gt;::iterator it = myList.begin(); it != myList.end(); it++) {
  MyComplexObject *o = *it;
  // Verarbeiten
  delete o;
}
</code></pre>
<p>Anmerkung: Es wird VS 2005 und Qt 4.7 benutzt.</p>
<p>Ist mein Ansatz einigermaßen korrekt?</p>
<p>L. G.,<br />
IBV</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329056/komplexe-objekte-in-liste-einfügen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 02:31:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329056.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Nov 2014 17:19:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 17:36:19 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich arbeite seit heute als Werkstudent bei einer Firma. Ich soll ein Projekt weitermachen, das, zum Glück, nur intern verwendet wird und wahrscheinlich auch nur temporär. Es wurde von einem Praktikanten begonnen.<br />
Ich bin selbst C++ Anfänger, aber folgender Code ist doch zwei mal komplett falsch:</p>
<pre><code>while(bla) {  
  MyComplexObject *o = new MyComplexObject();

  list.add(*o); // Wert wird eingefügt.
  // delete fehlt
}
</code></pre>
<p>Old-School-mäßig würde ich das so machen:</p>
<pre><code>while(bla) {  
  MyComplexObject *o = new MyComplexObject();

  list.add(o); // Adresse wird eingefügt.
}
</code></pre>
<p>Und dann später bei der Verarbeitung:</p>
<pre><code>for (std::list&lt;MyComplexObject&gt;::iterator it = myList.begin(); it != myList.end(); it++) {
  MyComplexObject *o = *it;
  // Verarbeiten
  delete o;
}
</code></pre>
<p>Anmerkung: Es wird VS 2005 und Qt 4.7 benutzt.</p>
<p>Ist mein Ansatz einigermaßen korrekt?</p>
<p>L. G.,<br />
IBV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426031</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 05 Nov 2014 17:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 17:29:18 GMT]]></title><description><![CDATA[<p>Du fügst den Pointer als int in eine Liste ein? Son Quatsch.</p>
<p>Warum überhaupt new? std::list&lt;MyComplexObjext&gt; und gut is!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426034</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 05 Nov 2014 17:29:18 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 17:29:33 GMT]]></title><description><![CDATA[<p>Nein, dein Ansatz ist nicht korrekt.<br />
In korrektem Ansatz verwendet man kein new und delete manuell.<br />
Wenn du dein Projekt nach C++11 portieren kannst, nimm eine Liste* von unique_ptr&lt;MyComplexObject&gt;, wenn dynamische Allozierung zwingend notwendig ist.<br />
Ansonsten so etwas wie boost's pointer container.</p>
<p>*Wieso eigentlich Liste? IdR ist auch das falsch, nimm std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426035</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 05 Nov 2014 17:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 17:40:43 GMT]]></title><description><![CDATA[<p>@manni66: Copy &amp; Paste, thx. <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="😉"
    /> Aber std::list&lt;MyComplexObjext&gt; ist auch falsch. Du kopierst und das ist immer teurer als einen Zeiger zu übergeben.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29873">@Nathan</a>: Wie gesagt: VS 2005. new und delete ist nicht falsch, aber halt nicht modern. Dynamische Alloziierung ist m. A. n. notwendig, weil die Objekte ja in einer Liste eingefügt werden und es teurer wäre, wenn ich ganze Objekte dort einfüge.<br />
Boost könnte ich evtl. verwenden.</p>
<p>L. G.,<br />
IBV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426037</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 05 Nov 2014 17:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 17:46:24 GMT]]></title><description><![CDATA[<p>Was ist denn <code>list</code> für ein Typ? Und was macht <code>add()</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426039</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 05 Nov 2014 17:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 17:49:01 GMT]]></title><description><![CDATA[<p>Furble Wurble schrieb:</p>
<blockquote>
<p>Was ist denn <code>list</code> für ein Typ? Und was macht <code>add()</code> ?</p>
</blockquote>
<p>Das ist Pseudocode!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426040</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 05 Nov 2014 17:49:01 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 18:03:01 GMT]]></title><description><![CDATA[<p>IBV schrieb:</p>
<blockquote>
<p>Dynamische Alloziierung ist m. A. n. notwendig, weil die Objekte ja in einer Liste eingefügt werden und es teurer wäre, wenn ich ganze Objekte dort einfüge.</p>
</blockquote>
<p>Wieso sollte es teurer sein, da ganze Objekte reinzufügen? So haste zwei news, einen für den Node und einen für das Objekt. Besser ist das definitiv nicht.<br />
Und nochmal: Wieso überhaupt Liste?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426043</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 05 Nov 2014 18:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 18:07:26 GMT]]></title><description><![CDATA[<p>IBV schrieb:</p>
<blockquote>
<p>@manni66: Copy &amp; Paste, thx. <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="😉"
    /> Aber std::list&lt;MyComplexObjext&gt; ist auch falsch. Du kopierst und das ist immer teurer als einen Zeiger zu übergeben.</p>
</blockquote>
<p>Move-Operationen anbieten? Emplace benutzen?</p>
<p>Der genannte Vorteil von Pointern ist ein laengst vergangener Mythos aus der <s>Steinzeit</s> fruehen Postmoderne.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426046</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 05 Nov 2014 18:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 18:13:01 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Wieso sollte es teurer sein, da ganze Objekte reinzufügen?</p>
</blockquote>
<p>Weil ein Kopieren einer Adresse schneller ist als, sagen wir, 100 Byte Objekte? Hätte ich nun gedacht...</p>
<blockquote>
<p>Und nochmal: Wieso überhaupt Liste?</p>
</blockquote>
<p>Ich weiß nicht, weshalb er Liste genommen hat. vector ist wohl tatsächlich besser.</p>
<p>L. G.,<br />
IBV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426048</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 05 Nov 2014 18:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Objekte in Liste einfügen on Wed, 05 Nov 2014 18:21:15 GMT]]></title><description><![CDATA[<p>IBV schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Wieso sollte es teurer sein, da ganze Objekte reinzufügen?</p>
</blockquote>
<p>Weil ein Kopieren einer Adresse schneller ist als, sagen wir, 100 Byte Objekte? Hätte ich nun gedacht...</p>
</blockquote>
<p>Ich glaub das zweite new ist da immer noch schlimmer, aber das ist für meinen Geschmack jetzt zu sehr premature optimization.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426049</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 05 Nov 2014 18:21:15 GMT</pubDate></item></channel></rss>