<?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[std::vector mit pair: Bestimmte Elemente löschen?!]]></title><description><![CDATA[<p>Folgendes Szenario:</p>
<pre><code class="language-cpp">typedef std::pair&lt;Object*, int&gt; ObjectPair;
std::vector&lt;ObjectPair&gt; vecPairs;

// Vector wird befüllt

for(size_t i=0; i&lt;vecPairs.size(); ++i) {
     vecPairs[i].second -= value;
}

// Jetzt würde ich gerne alle Paare entfernen, wo der int-Wert &lt;= 0 ist.
std::remove(vecPairs.begin(), vecPairs.end(), ?????);
</code></pre>
<p>Wie löse ich das? Danke <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/topic/291652/std-vector-mit-pair-bestimmte-elemente-löschen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 14:47:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291652.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Aug 2011 20:23:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::vector mit pair: Bestimmte Elemente löschen?! on Tue, 23 Aug 2011 20:23:02 GMT]]></title><description><![CDATA[<p>Folgendes Szenario:</p>
<pre><code class="language-cpp">typedef std::pair&lt;Object*, int&gt; ObjectPair;
std::vector&lt;ObjectPair&gt; vecPairs;

// Vector wird befüllt

for(size_t i=0; i&lt;vecPairs.size(); ++i) {
     vecPairs[i].second -= value;
}

// Jetzt würde ich gerne alle Paare entfernen, wo der int-Wert &lt;= 0 ist.
std::remove(vecPairs.begin(), vecPairs.end(), ?????);
</code></pre>
<p>Wie löse ich das? Danke <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/2109817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2109817</guid><dc:creator><![CDATA[Dropboxxy]]></dc:creator><pubDate>Tue, 23 Aug 2011 20:23:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector mit pair: Bestimmte Elemente löschen?! on Tue, 23 Aug 2011 20:48:42 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/algorithm/remove_if/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/remove_if/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2109830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2109830</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 23 Aug 2011 20:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector mit pair: Bestimmte Elemente löschen?! on Tue, 23 Aug 2011 20:50:52 GMT]]></title><description><![CDATA[<p>Schreib dir eine Funktion, die genau diese Bedingung überprüft und gib' sie an remove_if() weiter:</p>
<pre><code class="language-cpp">bool negativ(const ObjectPair&amp; val)
{ return val.second&lt;=0; }
</code></pre>
<p>PS: Dir ist schon klar, daß remove() und remove_if() keine Elemente ECHT löschen können? Die kopieren nur die Werte um und lassen am Ende einen unberührten Bereich, den du selber entsorgen mußt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2109833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2109833</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 23 Aug 2011 20:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector mit pair: Bestimmte Elemente löschen?! on Tue, 23 Aug 2011 21:02:49 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Schreib dir eine Funktion, die genau diese Bedingung überprüft und gib' sie an remove_if() weiter:</p>
<pre><code class="language-cpp">bool negativ(const ObjectPair&amp; val)
{ return val.second&lt;=0; }
</code></pre>
<p>PS: Dir ist schon klar, daß remove() und remove_if() keine Elemente ECHT löschen können? Die kopieren nur die Werte um und lassen am Ende einen unberührten Bereich, den du selber entsorgen mußt.</p>
</blockquote>
<p>Ja, dass ist mir klar <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>Ich bekomme noch folgenden Fehler:</p>
<pre><code class="language-cpp">algorithm(1815): error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'std::pair&lt;_Ty1,_Ty2&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)
</code></pre>
<p>Muss ich jetzt den Operator == definieren?<br />
Kann ich die Funktion &quot;negativ&quot; eigentlich irgendwie auch als Klassenfunktion implementieren und übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2109842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2109842</guid><dc:creator><![CDATA[Dropboxxy]]></dc:creator><pubDate>Tue, 23 Aug 2011 21:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector mit pair: Bestimmte Elemente löschen?! on Tue, 23 Aug 2011 21:12:27 GMT]]></title><description><![CDATA[<p>Falscher Algorithmus - remove() vergleicht die Werte, du benötigst hier remove_if()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2109849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2109849</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 23 Aug 2011 21:12:27 GMT</pubDate></item></channel></rss>