<?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 aus Vector moven die bestimmte Bedingung erfüllen.]]></title><description><![CDATA[<p>Ist bestimmt trivial, aber ich stehe gerade etwas auf dem Schlauch. Ich suche eine elegante Lösung für folgendes Problem: Ich möchte einen Vector nach Elementen durchsuchen die eine bestimmte Bedingung erfüllen, diese entfernen und in einen neuen Vector einfügen. Das soll am besten per move geschehen, da die Objekte teuer zu kopieren sind. hab dafür so direkt keinen Standard-Algorithmus gefunden, was mich wundert, da das doch eigentlich eine sehr gängige Anwendung sein sollte. Vielleicht habe ich das aber auch einfach nur übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323527/elemente-aus-vector-moven-die-bestimmte-bedingung-erfüllen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 22:22:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323527.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Feb 2014 13:55:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 13:55:32 GMT]]></title><description><![CDATA[<p>Ist bestimmt trivial, aber ich stehe gerade etwas auf dem Schlauch. Ich suche eine elegante Lösung für folgendes Problem: Ich möchte einen Vector nach Elementen durchsuchen die eine bestimmte Bedingung erfüllen, diese entfernen und in einen neuen Vector einfügen. Das soll am besten per move geschehen, da die Objekte teuer zu kopieren sind. hab dafür so direkt keinen Standard-Algorithmus gefunden, was mich wundert, da das doch eigentlich eine sehr gängige Anwendung sein sollte. Vielleicht habe ich das aber auch einfach nur übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381311</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 13:55:32 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 14:12:38 GMT]]></title><description><![CDATA[<p>sind diese teuer zu kopierenden objekte container? dann würd ich einfach swappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381316</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Mon, 03 Feb 2014 14:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 14:36:19 GMT]]></title><description><![CDATA[<p>Es sind keine container im eigentlichen Sinne. Aber wie den swappen und womit? Ich habe ja auf der einen Seite einen vollen Vektor und auf der anderen Seite eine leeren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381325</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 14:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 14:40:54 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>Es sind keine container im eigentlichen Sinne. Aber wie den swappen und womit? Ich habe ja auf der einen Seite einen vollen Vektor und auf der anderen Seite eine leeren.</p>
</blockquote>
<p>dann würdest du im leeren vektor hinten einen leeren container pushen und den dann mit dem gewünschten container aus dem vollen vektor swappen.</p>
<p>eine nicht gerade elegante aber dennoch mögliche idee wäre:<br />
du hast irgendwo einen pool dieser elemente und speicherst in deinen beiden vektoren lediglich zeiger auf elemente in diesem pool. ist aber nicht wirklich das was man unter speichereffizienz versteht. das kann ich aber auch schlecht beurteilen da ich nicht weiss wie das verhältnis der menge der objekte zu der grösse der objekte ist. wenn du 100 objekte a je 1mb hast, dann fallen die 4 byte pro element nicht auf...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381326</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Mon, 03 Feb 2014 14:40:54 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 15:32:30 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>TNA schrieb:</p>
<blockquote>
<p>Es sind keine container im eigentlichen Sinne. Aber wie den swappen und womit? Ich habe ja auf der einen Seite einen vollen Vektor und auf der anderen Seite eine leeren.</p>
</blockquote>
<p>dann würdest du im leeren vektor hinten einen leeren container pushen und den dann mit dem gewünschten container aus dem vollen vektor swappen</p>
</blockquote>
<p>Das ist ja in etwa so, als würde ich die Elemente manuell Suchen und dann moven. Das wäre jetzt auch mein naiver Ansatz gewesen. Da stehe ich dann aber noch vor dem Problem, die leeren elemente im ersten vector effizient entfernen zu müssen.</p>
<p>Ich hatte gehofft, dass es so etwas wie eine Kombination aus std::copy_if und std::remove_if mit move-Semantik geben würde, aber das schein nicht der Fall zu sein.:(</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381337</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 15:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 15:39:52 GMT]]></title><description><![CDATA[<p>Hab nochmal die Referenz durchgeschaut. Wie wäre es mit folgendem: Zuerst alle elemente die verschoben werden sollen per std::partition nach hinten schieben, diese dann per std::move in den neuen vector moven und dann ein range erase auf den hinteren teil des ersten vector. Spricht da etwas gegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381339</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 15:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 16:37:58 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>Hab nochmal die Referenz durchgeschaut. Wie wäre es mit folgendem: Zuerst alle elemente die verschoben werden sollen per std::partition nach hinten schieben, diese dann per std::move in den neuen vector moven und dann ein range erase auf den hinteren teil des ersten vector. Spricht da etwas gegen?</p>
</blockquote>
<p><code>partition</code> kopiert und verschiebt nicht, damit wirst du teure Kopien auch nicht los. Das ginge dann auch intuitiver durch <code>std::remove_copy_if</code> und <code>erase</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381348</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 03 Feb 2014 16:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 20:19:27 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p><code>partition</code> kopiert und verschiebt nicht, damit wirst du teure Kopien auch nicht los. Das ginge dann auch intuitiver durch <code>std::remove_copy_if</code> und <code>erase</code> .</p>
</blockquote>
<p>std::partition sollte swappen und das wiederum sollte per default moven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381369</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 03 Feb 2014 20:19:27 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 21:31:43 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>std::partition sollte swappen und das wiederum sollte per default moven.</p>
</blockquote>
<p>Exakt, und das ist sehr billig.</p>
<p>DocShoe schrieb:</p>
<blockquote>
<p>TNA schrieb:</p>
<blockquote>
<p>Hab nochmal die Referenz durchgeschaut. Wie wäre es mit folgendem: Zuerst alle elemente die verschoben werden sollen per std::partition nach hinten schieben, diese dann per std::move in den neuen vector moven und dann ein range erase auf den hinteren teil des ersten vector. Spricht da etwas gegen?</p>
</blockquote>
<p><code>partition</code> kopiert und verschiebt nicht, damit wirst du teure Kopien auch nicht los. Das ginge dann auch intuitiver durch <code>std::remove_copy_if</code> und <code>erase</code> .</p>
</blockquote>
<p>Abgesehen davon, das dies nicht richtig ist hätte das noch den Nachteil, dass ich nach dem std::remove_copy_if den vector nochmal mit std::remove_if durchgehen muss um die Elemente aus dem ersten vector zu löschen. Auch kann ich bei meiner Lösung für den zweiten vector Speicher reservieren, da ich nach dem std::partition genau weiß wie viele elemente gemoved werden müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381377</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 21:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 22:11:33 GMT]]></title><description><![CDATA[<p>Eventuell hilft<a href="http://en.cppreference.com/w/cpp/iterator/move_iterator" rel="nofollow"> <code>std::move_iterator</code> </a>... Allerdings könnte der auch zu voreilig moven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381380</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 03 Feb 2014 22:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 22:22:17 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Eventuell hilft<a href="http://en.cppreference.com/w/cpp/iterator/move_iterator" rel="nofollow"> <code>std::move_iterator</code> </a>... Allerdings könnte der auch zu voreilig moven.</p>
</blockquote>
<p>Ich habe mich heute gefragt, warum es eigentlich keinen move_iterator gibt, aber es gibt ihn tatsächlich :D. Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381383</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 22:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to Elemente aus Vector moven die bestimmte Bedingung erfüllen. on Mon, 03 Feb 2014 23:51:36 GMT]]></title><description><![CDATA[<p>Mithilfe der move-Iteratoren lässt sich in meiner Lösung das std::move durch eine range Konnstruktor bzw range insert ersetzen, was die Lösung nochmals effizienter macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381398</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 03 Feb 2014 23:51:36 GMT</pubDate></item></channel></rss>