<?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[Deep Copy von Vectoren]]></title><description><![CDATA[<p>Hi</p>
<p>wie code ich am elegantesten eine DeepCopy eines std::vector welcher Zeiger auf andere Objekte beinhaltet. Diese sollen dabei mitkopiert werden.</p>
<p>also sowas wie</p>
<pre><code class="language-cpp">typedef std::vector&lt; klasse* &gt; PKLASSEVEC;
PKLASSEVEC veca;
...//veca mit irgendwas füllen
PKLASSEVEC *vecb = new PKLASSEVEC(  veca.begin(), veca. end() );
</code></pre>
<p>reicht ja nicht, weil ich die Objekte nicht mitkopiere sondern nur den zeiger. Jemand eine elegante Idee?<br />
Betonung liegt auf elegant. Eine Schleife basteln und dann immer den Zuweisungsoperator oder den Kopierkonstruktor aufrufen ist ja nichts besonderes..</p>
<p>Danke euch.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162967/deep-copy-von-vectoren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 22:31:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162967.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Oct 2006 17:13:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Deep Copy von Vectoren on Tue, 24 Oct 2006 17:13:01 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>wie code ich am elegantesten eine DeepCopy eines std::vector welcher Zeiger auf andere Objekte beinhaltet. Diese sollen dabei mitkopiert werden.</p>
<p>also sowas wie</p>
<pre><code class="language-cpp">typedef std::vector&lt; klasse* &gt; PKLASSEVEC;
PKLASSEVEC veca;
...//veca mit irgendwas füllen
PKLASSEVEC *vecb = new PKLASSEVEC(  veca.begin(), veca. end() );
</code></pre>
<p>reicht ja nicht, weil ich die Objekte nicht mitkopiere sondern nur den zeiger. Jemand eine elegante Idee?<br />
Betonung liegt auf elegant. Eine Schleife basteln und dann immer den Zuweisungsoperator oder den Kopierkonstruktor aufrufen ist ja nichts besonderes..</p>
<p>Danke euch.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160553</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Tue, 24 Oct 2006 17:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Deep Copy von Vectoren on Tue, 24 Oct 2006 22:08:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class K
{
public:
	K(int i)
		:	m_i(i)
	{
		std::cout &lt;&lt; &quot;K constructed with i = &quot; &lt;&lt; i &lt;&lt; std::endl;
	}

	K(K const&amp; other)
		:	m_i(other.m_i)
	{
		std::cout &lt;&lt; &quot;K copy-constructed with i = &quot; &lt;&lt; other.m_i &lt;&lt; std::endl;
	}

private:
	int const m_i;
};

template&lt;class T&gt; T* mighty_cloner(T const* t)
{
	return new T(*t);
}

template&lt;class T&gt; void mighty_deleter(T* t)
{
	delete t;
}

void foo()
{
	std::vector&lt;K*&gt; v1;
	v1.push_back(new K(1));
	v1.push_back(new K(2));
	v1.push_back(new K(42));

	std::vector&lt;K*&gt; v2;
	std::transform(v1.begin(), v1.end(), std::back_inserter(v2), mighty_cloner&lt;K&gt;);

	std::for_each(v1.begin(), v1.end(), mighty_deleter&lt;K&gt;);
	v1.clear();

	std::for_each(v2.begin(), v2.end(), mighty_deleter&lt;K&gt;);
	v2.clear();
}
</code></pre>
<p>Elegant genug? BTW: nimm smart pointer wenn du die in Container reinstecken willst. Ist einfacher und sicherer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160671</guid><dc:creator><![CDATA[Plotzenhotz]]></dc:creator><pubDate>Tue, 24 Oct 2006 22:08:49 GMT</pubDate></item><item><title><![CDATA[Reply to Deep Copy von Vectoren on Tue, 24 Oct 2006 22:11:41 GMT]]></title><description><![CDATA[<p>genau sowas hab ich gesucht.<br />
danke dir.</p>
<p>gibts eigentlich von boost oder ggf. der stl nicht schon sowas wie nen cloner?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160672</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Tue, 24 Oct 2006 22:11:41 GMT</pubDate></item><item><title><![CDATA[Reply to Deep Copy von Vectoren on Wed, 25 Oct 2006 15:27:49 GMT]]></title><description><![CDATA[<p>Nein, aber SmartPointer (und die sind hier imho angebrachter). Damit sparst du dir z.B. die for_each Sachen, die ja eigentlich sowieso in den (Kon|De)struktor gehören.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1161105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1161105</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 25 Oct 2006 15:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to Deep Copy von Vectoren on Wed, 25 Oct 2006 15:40:59 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Nein, aber SmartPointer (und die sind hier imho angebrachter). Damit sparst du dir z.B. die for_each Sachen, die ja eigentlich sowieso in den (Kon|De)struktor gehören.</p>
</blockquote>
<p>Doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> gibts:<a href="http://www.boost.org/libs/ptr_container/doc/reference.html" rel="nofollow">http://www.boost.org/libs/ptr_container/doc/reference.html</a><br />
Macht genau das was Dein Code macht<br />
<a href="http://www.boost.org/libs/ptr_container/doc/reference.html#the-clonable-concept" rel="nofollow">http://www.boost.org/libs/ptr_container/doc/reference.html#the-clonable-concept</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1161114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1161114</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Wed, 25 Oct 2006 15:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to Deep Copy von Vectoren on Thu, 26 Oct 2006 00:50:16 GMT]]></title><description><![CDATA[<p>sorry, aber das check ich mal morgen ohne alk im blut.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1161540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1161540</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Thu, 26 Oct 2006 00:50:16 GMT</pubDate></item></channel></rss>