<?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[STL: vector + vector + duplikate rauswerfen]]></title><description><![CDATA[<p>Mal wieder eine von meinen &quot;geht das auch besser&quot; Fragen:</p>
<p>Ich habe zwei Vektoren die evtl. Duplikate beinhalten. Die zwei Vektoren muß ich zusammenschmeißen, duplikate rauswerfen udn das ganze wieder in einem vektor zurückgeben. Reihenfolge der ausgegebenen werte ist egal</p>
<p>mein Ansatz (pseudocode):</p>
<pre><code class="language-cpp">copy.reserve(v1.size() + v2.size());
copy = v1;
copy.insert(v1.end(), v2);
sort(copy);
it = unique(copy);
vector result(copy.begin(), it);
</code></pre>
<p>nun die angedrohte Frage: geht das (mit Bordmitteln) auch einfacher / effektiver?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143643/stl-vector-vector-duplikate-rauswerfen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 09:19:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143643.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Apr 2006 14:30:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL: vector + vector + duplikate rauswerfen on Mon, 10 Apr 2006 14:30:02 GMT]]></title><description><![CDATA[<p>Mal wieder eine von meinen &quot;geht das auch besser&quot; Fragen:</p>
<p>Ich habe zwei Vektoren die evtl. Duplikate beinhalten. Die zwei Vektoren muß ich zusammenschmeißen, duplikate rauswerfen udn das ganze wieder in einem vektor zurückgeben. Reihenfolge der ausgegebenen werte ist egal</p>
<p>mein Ansatz (pseudocode):</p>
<pre><code class="language-cpp">copy.reserve(v1.size() + v2.size());
copy = v1;
copy.insert(v1.end(), v2);
sort(copy);
it = unique(copy);
vector result(copy.begin(), it);
</code></pre>
<p>nun die angedrohte Frage: geht das (mit Bordmitteln) auch einfacher / effektiver?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034579</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Mon, 10 Apr 2006 14:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to STL: vector + vector + duplikate rauswerfen on Mon, 10 Apr 2006 14:44:22 GMT]]></title><description><![CDATA[<p>Als jemand, der auch gerade erst anfängt exzessiver die STL zu benutzen, versuche ich's mal:</p>
<pre><code class="language-cpp">sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());

vector result;
set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(result));
</code></pre>
<p>EDIT:<br />
set_union wäre wahrscheinlich besser, da intersection nur die Elemente beibehält, die in beiden Vektoren vorhanden waren, Rest wie oben..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034597</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 10 Apr 2006 14:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to STL: vector + vector + duplikate rauswerfen on Mon, 10 Apr 2006 15:23:06 GMT]]></title><description><![CDATA[<p>sieht schon mal vie besser aus <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>
<p>Noch 'ne Frage: wie schlecht ist std::sort für bereits sortierte Daten? Gibt es da irgendwelche Garantien?</p>
<p>(Ist leider ein Implementationsdetail, daß ich nicht explizit ausnutzen kann)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034632</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Mon, 10 Apr 2006 15:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to STL: vector + vector + duplikate rauswerfen on Mon, 10 Apr 2006 15:45:18 GMT]]></title><description><![CDATA[<p>peterchen schrieb:</p>
<blockquote>
<p>nun die angedrohte Frage: geht das (mit Bordmitteln) auch einfacher / effektiver?</p>
</blockquote>
<p>Effektiver wohl kaum, vielleicht etwas effizienter. :p<br />
Merge kann zwei sortierte Sequenzen sortiert zusammenfügen.</p>
<pre><code class="language-cpp">vector result;
result.reserve(v1.size()+v2.size());
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(result));
result.erase(unique(result.begin(), result.end()), result.end());
</code></pre>
<p>Auf jeden Fall würde ich die Daten danach nicht nochmal kopieren, sondern einfach die überflüssigen Einträge rauslöschen.<br />
Merge darfst Du allerdings nur verwenden, wenn die Daten sortiert sind. Sonst doch eher die Copy-Methode.</p>
<p>MfG Jester</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034643</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 10 Apr 2006 15:45:18 GMT</pubDate></item></channel></rss>