<?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[Löschen von Elementen aus mehreren Vectoren]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich tüftle nun schon eine ganze Weile mit einem std::vector-Problem herum und würde mich sehr freuen, wenn mir jemand von euch weiterhelfen kann!</p>
<p>Und zwar ergeben mehrere Vectoren zusammen einen Primärschlüssel, von denen ich doppelte Einträge basierend auf einer Versionsnummer eines 4 Vectors (vectorD) entfernen möchte. Ich habe dafür ein kleines Beispielprogramm geschrieben.<br />
Wichtig hierbei ist, dass</p>
<p>Könnt ihr mir sagen, wie ich die doppelten Einträge entfernen kann?<br />
Egal auf welche Art ich es versuche, ich bekomme immer einen Programmabbruch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Vielen Dank schon mal vorab!</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {

    cout &lt;&lt; &quot;Delete Vector Elements&quot; &lt;&lt; endl;

    //PrimaryKeys
    vector&lt;int&gt; vectorA;
    vector&lt;int&gt; vectorB;
    vector&lt;int&gt; vectorC;
    //Version
    vector&lt;int&gt; vectorD;

    int j = 0;

    for (int i = 0; i &lt; 5; i++) {
        vectorA.push_back(i);
        vectorB.push_back(i);
        vectorC.push_back(i);
        vectorD.push_back(j);
    }
    j++;

    for (int i = 0; i &lt; 5; i++) {
        vectorA.push_back(i);
        vectorB.push_back(i);
        vectorC.push_back(i);
        vectorD.push_back(j);
    }

    cout &lt;&lt; &quot;vectorD;vectorA;vectorB;vectorC&quot;&lt;&lt;endl;
      for (int i = 0; i &lt; vectorD.size(); i++) {
      cout &lt;&lt; vectorD[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorA[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorB[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorC[i]&lt;&lt;endl;
      }

    cout &lt;&lt; &quot;Delete elements:&quot;&lt;&lt;endl;
    for (int i = 0; i &lt; vectorD.size(); i++) {
        for (int l = 0; l &lt; vectorD.size(); l++) {
            if (vectorA[i] == vectorA[l]
                    &amp;&amp; vectorB[i] == vectorB[l]
                    &amp;&amp; vectorC[i] == vectorC[l]) {
                if (vectorD[i] &lt;= vectorD[j]) {
                    cout &lt;&lt; vectorD[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorA[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorB[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorC[i] &lt;&lt; &quot; - How to delete this element???&quot; &lt;&lt; endl;

                   // vectorA.erase(vectorD.begin()+i);
                   // vectorB.erase(vectorD.begin()+i);
                   // vectorC.erase(vectorD.begin()+i);
                   // vectorD.erase(vectorD.begin()+i); D kann auch vollständig bleiben

                } else {
                    cout &lt;&lt; vectorD[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorA[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorB[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorC[i] &lt;&lt; &quot; - Keep this element!!!&quot; &lt;&lt; endl;
                }
            }
        }
    }

    return 0;
}
</code></pre>
<p>Das ergibt folgenden Output:</p>
<p>Delete Vector Elements<br />
vectorD;vectorA;vectorB;vectorC<br />
0;0;0;0<br />
0;1;1;1<br />
0;2;2;2<br />
0;3;3;3<br />
0;4;4;4<br />
1;0;0;0<br />
1;1;1;1<br />
1;2;2;2<br />
1;3;3;3<br />
1;4;4;4<br />
Delete elements:<br />
0;0;0;0 - How to delete this element???<br />
0;0;0;0 - How to delete this element???<br />
0;1;1;1 - How to delete this element???<br />
0;1;1;1 - How to delete this element???<br />
0;2;2;2 - How to delete this element???<br />
0;2;2;2 - How to delete this element???<br />
0;3;3;3 - How to delete this element???<br />
0;3;3;3 - How to delete this element???<br />
0;4;4;4 - How to delete this element???<br />
0;4;4;4 - How to delete this element???<br />
1;0;0;0 - Keep this element!!!<br />
1;0;0;0 - Keep this element!!!<br />
1;1;1;1 - Keep this element!!!<br />
1;1;1;1 - Keep this element!!!<br />
1;2;2;2 - Keep this element!!!<br />
1;2;2;2 - Keep this element!!!<br />
1;3;3;3 - Keep this element!!!<br />
1;3;3;3 - Keep this element!!!<br />
1;4;4;4 - Keep this element!!!<br />
1;4;4;4 - Keep this element!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288205/löschen-von-elementen-aus-mehreren-vectoren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 02:23:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288205.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Jun 2011 13:55:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Sun, 12 Jun 2011 13:55:45 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich tüftle nun schon eine ganze Weile mit einem std::vector-Problem herum und würde mich sehr freuen, wenn mir jemand von euch weiterhelfen kann!</p>
<p>Und zwar ergeben mehrere Vectoren zusammen einen Primärschlüssel, von denen ich doppelte Einträge basierend auf einer Versionsnummer eines 4 Vectors (vectorD) entfernen möchte. Ich habe dafür ein kleines Beispielprogramm geschrieben.<br />
Wichtig hierbei ist, dass</p>
<p>Könnt ihr mir sagen, wie ich die doppelten Einträge entfernen kann?<br />
Egal auf welche Art ich es versuche, ich bekomme immer einen Programmabbruch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Vielen Dank schon mal vorab!</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {

    cout &lt;&lt; &quot;Delete Vector Elements&quot; &lt;&lt; endl;

    //PrimaryKeys
    vector&lt;int&gt; vectorA;
    vector&lt;int&gt; vectorB;
    vector&lt;int&gt; vectorC;
    //Version
    vector&lt;int&gt; vectorD;

    int j = 0;

    for (int i = 0; i &lt; 5; i++) {
        vectorA.push_back(i);
        vectorB.push_back(i);
        vectorC.push_back(i);
        vectorD.push_back(j);
    }
    j++;

    for (int i = 0; i &lt; 5; i++) {
        vectorA.push_back(i);
        vectorB.push_back(i);
        vectorC.push_back(i);
        vectorD.push_back(j);
    }

    cout &lt;&lt; &quot;vectorD;vectorA;vectorB;vectorC&quot;&lt;&lt;endl;
      for (int i = 0; i &lt; vectorD.size(); i++) {
      cout &lt;&lt; vectorD[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorA[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorB[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorC[i]&lt;&lt;endl;
      }

    cout &lt;&lt; &quot;Delete elements:&quot;&lt;&lt;endl;
    for (int i = 0; i &lt; vectorD.size(); i++) {
        for (int l = 0; l &lt; vectorD.size(); l++) {
            if (vectorA[i] == vectorA[l]
                    &amp;&amp; vectorB[i] == vectorB[l]
                    &amp;&amp; vectorC[i] == vectorC[l]) {
                if (vectorD[i] &lt;= vectorD[j]) {
                    cout &lt;&lt; vectorD[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorA[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorB[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorC[i] &lt;&lt; &quot; - How to delete this element???&quot; &lt;&lt; endl;

                   // vectorA.erase(vectorD.begin()+i);
                   // vectorB.erase(vectorD.begin()+i);
                   // vectorC.erase(vectorD.begin()+i);
                   // vectorD.erase(vectorD.begin()+i); D kann auch vollständig bleiben

                } else {
                    cout &lt;&lt; vectorD[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorA[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorB[i] &lt;&lt; &quot;;&quot; &lt;&lt; vectorC[i] &lt;&lt; &quot; - Keep this element!!!&quot; &lt;&lt; endl;
                }
            }
        }
    }

    return 0;
}
</code></pre>
<p>Das ergibt folgenden Output:</p>
<p>Delete Vector Elements<br />
vectorD;vectorA;vectorB;vectorC<br />
0;0;0;0<br />
0;1;1;1<br />
0;2;2;2<br />
0;3;3;3<br />
0;4;4;4<br />
1;0;0;0<br />
1;1;1;1<br />
1;2;2;2<br />
1;3;3;3<br />
1;4;4;4<br />
Delete elements:<br />
0;0;0;0 - How to delete this element???<br />
0;0;0;0 - How to delete this element???<br />
0;1;1;1 - How to delete this element???<br />
0;1;1;1 - How to delete this element???<br />
0;2;2;2 - How to delete this element???<br />
0;2;2;2 - How to delete this element???<br />
0;3;3;3 - How to delete this element???<br />
0;3;3;3 - How to delete this element???<br />
0;4;4;4 - How to delete this element???<br />
0;4;4;4 - How to delete this element???<br />
1;0;0;0 - Keep this element!!!<br />
1;0;0;0 - Keep this element!!!<br />
1;1;1;1 - Keep this element!!!<br />
1;1;1;1 - Keep this element!!!<br />
1;2;2;2 - Keep this element!!!<br />
1;2;2;2 - Keep this element!!!<br />
1;3;3;3 - Keep this element!!!<br />
1;3;3;3 - Keep this element!!!<br />
1;4;4;4 - Keep this element!!!<br />
1;4;4;4 - Keep this element!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077081</guid><dc:creator><![CDATA[Varox_83]]></dc:creator><pubDate>Sun, 12 Jun 2011 13:55:45 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Sun, 12 Jun 2011 13:58:17 GMT]]></title><description><![CDATA[<p><em>Wichtig hierbei ist, dass</em><br />
... die Reihenfolge der Vectoren gleich bleibt, da sich sonst ein anderer Schluessel ergibt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077083</guid><dc:creator><![CDATA[Varox_83]]></dc:creator><pubDate>Sun, 12 Jun 2011 13:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Sun, 12 Jun 2011 14:02:50 GMT]]></title><description><![CDATA[<p>Du könntest dir mal die STL-Algorithmen <code>std::remove()</code> und <code>std::remove_if()</code> auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> anschauen. Die haben nämlich lineare Laufzeit, während ein <code>erase()</code> in einer Iterationsschleife zu quadratischer Laufzeit führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077086</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jun 2011 14:02:50 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Mon, 13 Jun 2011 11:20:51 GMT]]></title><description><![CDATA[<p>Hallo, Danke für die schnelle Antwort, aber<br />
die beiden stl-Algorithmen helfen mir in diesem Fall ich nicht wirklich weiter.<br />
std::remove löscht Elemente mit einem bestimmten Wert und std::remove_if (<a href="http://www.cplusplus.com/reference/algorithm/remove_if/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/remove_if/</a>) bekommt eine Funktion übergeben, die einen Wert als Parameter entgegen nimmt und dann abhängig vom Rückgabewert, dieses Element löscht.<br />
Ich muss aber Elemente basierend auf verschiedenen Werten aus anderen Vectoren löschen.<br />
Hat sonst noch jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077423</guid><dc:creator><![CDATA[Varox_83]]></dc:creator><pubDate>Mon, 13 Jun 2011 11:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Mon, 13 Jun 2011 11:31:35 GMT]]></title><description><![CDATA[<p>Immer noch remove_if. Schreib dir einen Funktor der die anderen Vektoren kennt und deine Bedingung als operator() implementiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077427</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 13 Jun 2011 11:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Mon, 13 Jun 2011 11:52:59 GMT]]></title><description><![CDATA[<p>Hallo SeppJ,<br />
was meinst du mit Funktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077432</guid><dc:creator><![CDATA[Varox_83]]></dc:creator><pubDate>Mon, 13 Jun 2011 11:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen von Elementen aus mehreren Vectoren on Mon, 13 Jun 2011 12:03:36 GMT]]></title><description><![CDATA[<p>Varox_83 schrieb:</p>
<blockquote>
<p>Hallo SeppJ,<br />
was meinst du mit Funktor?</p>
</blockquote>
<p><a href="http://www.c-plusplus.net/forum/277536" rel="nofollow">klickst du hier...</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077437</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 13 Jun 2011 12:03:36 GMT</pubDate></item></channel></rss>