<?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 hinzufügen ohne objekt zu kopieren (ggf. refcount++)]]></title><description><![CDATA[<p>Hallo,<br />
gibt es eine Möglichkeit ein zuvor erstelltes Objekt zu einem Vector hinzuzufügen, ohne dass es kopiert wird und somit eine neue Speicheradresse bekommt?</p>
<p>Sinn des Ganzen:</p>
<p>ich habe ein Objekt (TElement), dieses besitzt eine Liste (vector) von anderen Objekten (TConnection).<br />
beim Erstellen von TElement werden diverse TConnection erzeugt und dabei der this-pointer des TElement in den TConnection's gespeichert.</p>
<p>wenn ich dieses TElement in einem Vector speichere, passen scheinbar die TElement-Pointer in den TConnections nicht mehr.</p>
<p>Wie kann ich dieses Problem lösen?</p>
<p>Gruß Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295046/vector-hinzufügen-ohne-objekt-zu-kopieren-ggf-refcount</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 07:28:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295046.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Nov 2011 10:52:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 10:52:34 GMT]]></title><description><![CDATA[<p>Hallo,<br />
gibt es eine Möglichkeit ein zuvor erstelltes Objekt zu einem Vector hinzuzufügen, ohne dass es kopiert wird und somit eine neue Speicheradresse bekommt?</p>
<p>Sinn des Ganzen:</p>
<p>ich habe ein Objekt (TElement), dieses besitzt eine Liste (vector) von anderen Objekten (TConnection).<br />
beim Erstellen von TElement werden diverse TConnection erzeugt und dabei der this-pointer des TElement in den TConnection's gespeichert.</p>
<p>wenn ich dieses TElement in einem Vector speichere, passen scheinbar die TElement-Pointer in den TConnections nicht mehr.</p>
<p>Wie kann ich dieses Problem lösen?</p>
<p>Gruß Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2140989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2140989</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 10:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 10:56:13 GMT]]></title><description><![CDATA[<p>Mit Zeigern oder Smart-Pointern auf Objekte arbeiten. Z.B. <code>std::vector&lt;std::unique_ptr&lt;T&gt;&gt;</code> oder <code>boost::ptr_vector&lt;T&gt;</code> .</p>
<p>Oder du schaust, dass die Connections beim Kopieren des Objekts ebenfalls angepasst werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2140993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2140993</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Nov 2011 10:56:13 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 10:58:10 GMT]]></title><description><![CDATA[<p>Kopierkonstruktor + op= für TElement implementieren und dort den TConnections im Vector den Zeiger neu zuweisen.<br />
Oder so implementieren, dass die TConnections nichts vom TElement wissen müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2140994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2140994</guid><dc:creator><![CDATA[Solidago]]></dc:creator><pubDate>Sun, 06 Nov 2011 10:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:00:00 GMT]]></title><description><![CDATA[<p>bei dem unique_ptr muss ich sicherlich den refernz-counter erhöhen (wenn es bei normalen klassen sowas gibt), oder? bzw. mich um die komplette speicherverwaltung kümmern (new/delete)</p>
<p>wie kann ich letzteres abfangen?</p>
<p>Gruß Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2140995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2140995</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:00:51 GMT]]></title><description><![CDATA[<p>Musst du beides nicht. Dazu ist er schließlich da.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2140996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2140996</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:14:25 GMT]]></title><description><![CDATA[<p>laut <a href="http://en.cppreference.com/w/cpp/memory/unique_ptr" rel="nofollow">http://en.cppreference.com/w/cpp/memory/unique_ptr</a> muss ich &lt;memory&gt; einbinden...</p>
<p>dann müsste ich das doch so definieren:<br />
typedef std::vector&lt;std::unique_ptr&lt;TElement&gt;&gt; TElementList;</p>
<p>aber ich bekomme die Fehlermeldung<br />
‘unique_ptr’ is not a member of ‘std’</p>
<p>was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141001</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:14:25 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:16:07 GMT]]></title><description><![CDATA[<p>Vermutlich musst du bei deinem Compiler erst den C++11 Modus einschalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141005</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:16:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:27:57 GMT]]></title><description><![CDATA[<p>nutze den g++ (4.4.3) unter linux</p>
<p><a href="http://gcc.gnu.org/projects/cxx0x.html" rel="nofollow">http://gcc.gnu.org/projects/cxx0x.html</a><br />
Important: GCC's support for C++11 is still experimental.</p>
<p>trotzdem hab ichs mal probiert:<br />
g++ -Wall -std=c++11 platine.cpp -o platine `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`</p>
<p>cc1plus: error: unrecognized command line option &quot;-std=c++11&quot;</p>
<p>in der man-page finde ich den 11er nicht nur 0x</p>
<p>gibts nix vergleichbares zu unique_ptr im c++ standard?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141011</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:29:07 GMT]]></title><description><![CDATA[<p>C++0x = C++11. Also stimmt -std=c++0x schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141012</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 11:59:54 GMT]]></title><description><![CDATA[<p>jetzt findet er es zumindest mal...</p>
<p>aber scheinbar ändert sich da auch mein aufruf...</p>
<p>Fehlermeldung:</p>
<blockquote>
<p>error: no matching function for call to ‘std::vector&lt;std::unique_ptr&lt;TConnection, std::default_delete&lt;TConnection&gt; &gt;, std::allocator&lt;std::unique_ptr&lt;TConnection, std::default_delete&lt;TConnection&gt; &gt; &gt; &gt;::push_back(TConnection&amp;)’<br />
/usr/include/c++/4.4/bits/stl_vector.h:733: note: candidates are: void std::vector&lt;_Tp, _Alloc&gt;::push_back(const _Tp&amp;) [with _Tp = std::unique_ptr&lt;TConnection, std::default_delete&lt;TConnection&gt; &gt;, _Alloc = std::allocator&lt;std::unique_ptr&lt;TConnection, std::default_delete&lt;TConnection&gt; &gt; &gt;]<br />
/usr/include/c++/4.4/bits/stl_vector.h:746: note: void std::vector&lt;_Tp, _Alloc&gt;::push_back(_Tp&amp;&amp;) [with _Tp = std::unique_ptr&lt;TConnection, std::default_delete&lt;TConnection&gt; &gt;, _Alloc = std::allocator&lt;std::unique_ptr&lt;TConnection, std::default_delete&lt;TConnection&gt; &gt; &gt;]</p>
</blockquote>
<p>code:</p>
<pre><code>TElement::TElement(...)
{
...
    TConnection c(fPlatine,this,id,s);
    Connections.push_back(c); //diese zeile wird bemängelt
</code></pre>
<p>}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141030</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 11:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 12:34:14 GMT]]></title><description><![CDATA[<p>Du hast ja jetzt auch keine Values mehr in deinem vector, sondern unique_ptr!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141042</guid><dc:creator><![CDATA[Solidago]]></dc:creator><pubDate>Sun, 06 Nov 2011 12:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 14:04:29 GMT]]></title><description><![CDATA[<p>über gebe ich dann die Speicheradresse??</p>
<p>also push_back(&amp;c)?</p>
<p>ggf. mit cast auf unique pointer oder wie läuft das dann?</p>
<p>wie bekomme ich mein Objekt wieder raus und wie ist das mit der Speicherfreigabe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141097</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 14:04:29 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 14:08:40 GMT]]></title><description><![CDATA[<p>Du musst die Objekte dynamisch anlegen. Freigegeben werden sie automatisch, da es sich um einen Smart-Pointer handelt.</p>
<pre><code class="language-cpp">std::unique_ptr&lt;TConnection&gt; c(new TConnection(fPlatine,this,id,s));
Connections.push_back(c);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2141102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141102</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Nov 2011 14:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Sun, 06 Nov 2011 14:42:04 GMT]]></title><description><![CDATA[<p>mhm, kann ich da einfach per list[i] auf die TConnections zugreifen?</p>
<p>habe überlegt, obs nicht sinnvoller wäre die ganze pointer-verarbeitung aus dem constructor rauszuverlagern (init-prozedure), die ich auf das listen-element ausführe.</p>
<p>Pseudocode:</p>
<pre><code class="language-cpp">std::vector&lt;TConnection&gt; TConnectionList;
TConnectionList clist;

TConnection c();
clist.push_back(c);
clist[clist.size()-1].init(...)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2141125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141125</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Sun, 06 Nov 2011 14:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 10:36:07 GMT]]></title><description><![CDATA[<p>ich lasse jetzt die Berechnungen das übergeordnete TElement machen und kann somit auf die Pointer verzichten. Ich denke das ist die sinnvollste und stabilste Variante.</p>
<p>Danke trotzdem an alle, die mitgeholfen haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142469</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Wed, 09 Nov 2011 10:36:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 16:31:05 GMT]]></title><description><![CDATA[<p>mhm, klappt doch nicht ganz ohne die pointer,</p>
<p>probiere schon eine Weile rum, aber komme nicht wirklich weiter mit dem unique_ptr...</p>
<pre><code class="language-cpp">typedef std::vector&lt;std::unique_ptr&lt;TElement&gt;&gt; pElementList;
pElementList pElements;

unique_ptr&lt;TElement&gt; pE(new TElement());
pE-&gt;InitElement(this,Template,left,top,4,4);
pElements.push_back(pE);
</code></pre>
<p>bei der letzten Zeile wirft mir der cimpiler eine 10-seitige Fehlermeldung um die Ohren aus der ich nicht wirklich was herausnehmen kann...</p>
<blockquote>
<p>In file included from /usr/include/c++/4.4/i486-linux-gnu/bits/c++allocator.h:34,<br />
from /usr/include/c++/4.4/bits/allocator.h:48,<br />
from /usr/include/c++/4.4/string:43,<br />
from /usr/include/c++/4.4/bits/locale_classes.h:42,<br />
from /usr/include/c++/4.4/bits/ios_base.h:43,<br />
from /usr/include/c++/4.4/ios:43,<br />
from /usr/include/c++/4.4/ostream:40,<br />
from /usr/include/c++/4.4/iostream:40,<br />
from platine.h:1,<br />
from platine.cpp:1:<br />
/usr/include/c++/4.4/bits/unique_ptr.h: In member function ‘void __gnu_cxx::new_allocator&lt;_Tp&gt;::construct(_Tp*, const _Tp&amp;) [with _Tp = std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt;]’:<br />
/usr/include/c++/4.4/bits/stl_vector.h:737: instantiated from ‘void std::vector&lt;_Tp, _Alloc&gt;::push_back(const _Tp&amp;) [with _Tp = std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt;, _Alloc = std::allocator&lt;std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt; &gt;]’<br />
platine.cpp:499: instantiated from here<br />
/usr/include/c++/4.4/bits/unique_ptr.h:214: error: deleted function ‘std::unique_ptr&lt;_Tp, _Tp_Deleter&gt;::unique_ptr(const std::unique_ptr&lt;_Tp, _Tp_Deleter&gt;&amp;) [with _Tp = TElement, _Tp_Deleter = std::default_delete&lt;TElement&gt;]’<br />
/usr/include/c++/4.4/ext/new_allocator.h:105: error: used here<br />
In file included from /usr/include/c++/4.4/vector:69,<br />
from platine.h:3,<br />
from platine.cpp:1:<br />
/usr/include/c++/4.4/bits/unique_ptr.h: In member function ‘void std::vector&lt;_Tp, _Alloc&gt;::_M_insert_aux(__gnu_cxx::__normal_iterator&lt;typename std::_Vector_base&lt;_Tp, _Alloc&gt;::_Tp_alloc_type::pointer, std::vector&lt;_Tp, _Alloc&gt; &gt;, _Args&amp;&amp; ...) [with _Args = const std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt;&amp;, _Tp = std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt;, _Alloc = std::allocator&lt;std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt; &gt;]’:<br />
/usr/include/c++/4.4/bits/stl_vector.h:741: instantiated from ‘void std::vector&lt;_Tp, _Alloc&gt;::push_back(const _Tp&amp;) [with _Tp = std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt;, _Alloc = std::allocator&lt;std::unique_ptr&lt;TElement, std::default_delete&lt;TElement&gt; &gt; &gt;]’<br />
platine.cpp:499: instantiated from here<br />
/usr/include/c++/4.4/bits/unique_ptr.h:214: error: deleted function ‘std::unique_ptr&lt;_Tp, _Tp_Deleter&gt;::unique_ptr(const std::unique_ptr&lt;_Tp, _Tp_Deleter&gt;&amp;) [with _Tp = TElement, _Tp_Deleter = std::default_delete&lt;TElement&gt;]’<br />
/usr/include/c++/4.4/bits/vector.tcc:314: error: used here</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2142580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142580</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Wed, 09 Nov 2011 16:31:05 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 17:50:31 GMT]]></title><description><![CDATA[<p>Es muss</p>
<pre><code class="language-cpp">pElements.push_back(std::move(pE));
</code></pre>
<p>heißen. Dies hat auch Nexus falsch gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142609</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 09 Nov 2011 17:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 17:54:47 GMT]]></title><description><![CDATA[<p>ok, danke</p>
<p>kann ich da nicht auf unique_ptr verzichten und std::move beim normalen vector anwenden (damit keine Kopie erstellt wird)?</p>
<pre><code class="language-cpp">TElement e;
fElements.push_back(std::move(e));
</code></pre>
<p>der compiler frisst es zumindest <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/2142611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142611</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Wed, 09 Nov 2011 17:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 17:56:27 GMT]]></title><description><![CDATA[<p>Wenn der Default-Move-Ctor das richtige tut, oder du deinen eigenen hast, schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142614</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 09 Nov 2011 17:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 18:01:34 GMT]]></title><description><![CDATA[<p>Was du auch noch machen könntest, wäre emplace_back zu verwenden. Dem übergibt man die Konstruktor-Argumente und das Element wird ohne Kopie direkt im vector erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142615</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 09 Nov 2011 18:01:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 18:42:41 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wenn der Default-Move-Ctor das richtige tut, oder du deinen eigenen hast, schon.</p>
</blockquote>
<p>ich habe einen leeren constructor, da ich die Klasse erst mit der InitElement initialisiere...<br />
ich weis ja nicht, ob std::move das tut, was ich will...er soll das erstellte objekt in den Vector &quot;moven&quot; (also nicht kopieren, sondern verschieben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142636</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Wed, 09 Nov 2011 18:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 18:44:51 GMT]]></title><description><![CDATA[<p>Ein neues Objekt muss bei push_back auf jeden Fall erstellt werden. Das mit InitElement vergiss mal wieder, das ist Schwachsinn. Member werden im Ctor initialisiert. Ich würde wohl die Variante mit unique_ptr nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142638</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 09 Nov 2011 18:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 18:55:13 GMT]]></title><description><![CDATA[<p>mhm...<br />
muss ich auf noch irgendwas achten, oder kann ich das einfach so verwenden:</p>
<pre><code class="language-cpp">typedef std::vector&lt;std::unique_ptr&lt;TElement&gt;&gt; pElementList;
  pElementList pElements;

  unique_ptr&lt;TElement&gt; pE(new TElement());
  pE-&gt;InitElement(this,Template,left,top,4,4);//init-code in constructor verlagern
  pElements.push_back(std::move(pE));
</code></pre>
<p>stimmt der zugriff? freigegeben wird das TElement ja, wenn die liste zerstört wird, oder? bzw. wenn ich erase aufrufe...kann ich irgendwie elemente ohne iterator löschen? also per index-zugriff (z.b. remove(4) soll das 5.element löschen)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142643</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Wed, 09 Nov 2011 18:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 18:58:59 GMT]]></title><description><![CDATA[<p>Stimmt so, ja. Ein Element an einer bestimmten Position im vector kannst du löschen durch:</p>
<pre><code class="language-cpp">vec.erase(vec.begin() + n);
</code></pre>
<p>Bei vector könnte sowas jedoch langsam sein, da hier alle Elemente hinter dem gelöschten um eine Stelle vorgeschoben werden müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142645</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 09 Nov 2011 18:58:59 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 19:15:57 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Bei vector könnte sowas jedoch langsam sein, da hier alle Elemente hinter dem gelöschten um eine Stelle vorgeschoben werden müssen.</p>
</blockquote>
<p>welche Alternativen gäbe es denn? prinzipiell brauche ich ja ein dynamisches array mit Klassen-Elementen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142655</guid><dc:creator><![CDATA[_frank_]]></dc:creator><pubDate>Wed, 09 Nov 2011 19:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to vector hinzufügen ohne objekt zu kopieren (ggf. refcount++) on Wed, 09 Nov 2011 19:17:11 GMT]]></title><description><![CDATA[<p><em>frank</em> schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Bei vector könnte sowas jedoch langsam sein, da hier alle Elemente hinter dem gelöschten um eine Stelle vorgeschoben werden müssen.</p>
</blockquote>
<p>welche Alternativen gäbe es denn? prinzipiell brauche ich ja ein dynamisches array mit Klassen-Elementen.</p>
</blockquote>
<p>Wenn die Reihenfolge im Vektor egal ist, such mal das erase-remove Idiom.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2142657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2142657</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Wed, 09 Nov 2011 19:17:11 GMT</pubDate></item></channel></rss>