<?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[Komplizierte Verkettung mit for_each und remove_if mit Binder bauen]]></title><description><![CDATA[<p>Hallo, ich möchte das hier in ein for_each umwandeln:</p>
<pre><code>Pseudocode:

intvector a, b
for_each item in a
    if item is in b
        remove item in b
</code></pre>
<p>In c++</p>
<pre><code class="language-cpp">vector&lt;int&gt; a,b; // gefüllt bei mir ;)
vector&lt;int&gt;::const_iterator it;
for(it = a.begin(); it != a.end(); ++it) {
    vector&lt;int&gt;::iterator suche = find(b.begin(), b.end(), *it);
    if(suche != b.end()) {
        b.erase(suche);
    }
}
</code></pre>
<p>Kann ich das mit den Bindern der STL (kein Boost!) und for_each in ein Statement bekommen?</p>
<p>Also:</p>
<pre><code class="language-cpp">for_each(a.begin(), a.end(), /* ???? */);
</code></pre>
<p>Irgendwas mit mem_fun und remove_if, aber ich bekomms net hin.</p>
<p>Was passiert wenn man std::vector::erase auf das Ende aufruft, also auf std::vector::end()?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159732/komplizierte-verkettung-mit-for_each-und-remove_if-mit-binder-bauen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 22:02:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159732.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Sep 2006 13:07:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komplizierte Verkettung mit for_each und remove_if mit Binder bauen on Mon, 18 Sep 2006 13:07:08 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte das hier in ein for_each umwandeln:</p>
<pre><code>Pseudocode:

intvector a, b
for_each item in a
    if item is in b
        remove item in b
</code></pre>
<p>In c++</p>
<pre><code class="language-cpp">vector&lt;int&gt; a,b; // gefüllt bei mir ;)
vector&lt;int&gt;::const_iterator it;
for(it = a.begin(); it != a.end(); ++it) {
    vector&lt;int&gt;::iterator suche = find(b.begin(), b.end(), *it);
    if(suche != b.end()) {
        b.erase(suche);
    }
}
</code></pre>
<p>Kann ich das mit den Bindern der STL (kein Boost!) und for_each in ein Statement bekommen?</p>
<p>Also:</p>
<pre><code class="language-cpp">for_each(a.begin(), a.end(), /* ???? */);
</code></pre>
<p>Irgendwas mit mem_fun und remove_if, aber ich bekomms net hin.</p>
<p>Was passiert wenn man std::vector::erase auf das Ende aufruft, also auf std::vector::end()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139588</guid><dc:creator><![CDATA[Thomas ** 0]]></dc:creator><pubDate>Mon, 18 Sep 2006 13:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to Komplizierte Verkettung mit for_each und remove_if mit Binder bauen on Mon, 18 Sep 2006 13:27:51 GMT]]></title><description><![CDATA[<p>Thomas (: schrieb:</p>
<blockquote>
<p>Hallo, ich möchte das hier in ein for_each umwandeln:</p>
<pre><code>Pseudocode:

intvector a, b
for_each item in a
    if item is in b
        remove item in b
</code></pre>
<p>In c++</p>
<pre><code class="language-cpp">vector&lt;int&gt; a,b; // gefüllt bei mir ;)
vector&lt;int&gt;::const_iterator it;
for(it = a.begin(); it != a.end(); ++it) {
    vector&lt;int&gt;::iterator suche = find(b.begin(), b.end(), *it);
    if(suche != b.end()) {
        b.erase(suche);
    }
}
</code></pre>
<p>Kann ich das mit den Bindern der STL (kein Boost!) und for_each in ein Statement bekommen?</p>
<p>Also:</p>
<pre><code class="language-cpp">for_each(a.begin(), a.end(), /* ???? */);
</code></pre>
<p>Irgendwas mit mem_fun und remove_if, aber ich bekomms net hin.</p>
</blockquote>
<p>die binder und adapter der standardbibliothek arbiten nur mit funktionen, die einen oder 2 parameter haben. remove_if hat 3 parameter, ich bezweifle daher, dass das möglich ist.</p>
<p>Thomas (: schrieb:</p>
<blockquote>
<p>Was passiert wenn man std::vector::erase auf das Ende aufruft, also auf std::vector::end()?</p>
</blockquote>
<p>undefiniertes verhalten. erase mit einem iterator löscht ein element - das impliziert, dass diese element existiert, der iterator also dereferenziert werden kann. erase mit 2 iteratoren (für den zweiten benutzen wir end() ) sollte allerdings funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139622</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 18 Sep 2006 13:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to Komplizierte Verkettung mit for_each und remove_if mit Binder bauen on Mon, 18 Sep 2006 15:27:59 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>die binder und adapter der standardbibliothek arbiten nur mit funktionen, die einen oder 2 parameter haben. remove_if hat 3 parameter, ich bezweifle daher, dass das möglich ist.</p>
</blockquote>
<p>Stimmt schade. Naja lass ich eben die Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139740</guid><dc:creator><![CDATA[Thomas ** 0]]></dc:creator><pubDate>Mon, 18 Sep 2006 15:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Komplizierte Verkettung mit for_each und remove_if mit Binder bauen on Mon, 18 Sep 2006 16:42:08 GMT]]></title><description><![CDATA[<p>Wie wärs damit:</p>
<pre><code class="language-cpp">struct Eraser : public binary_function&lt;int,vector&lt;int&gt;,bool&gt; {

     result_type operator()(first_argument_type val,second_argument_type vec) 
     { 
               if(find(vec.begin(),vec.end(),val) !=  vec.end()) return true;
               return false;
     } 

};

...
...

b.erase(remove_if(b.begin(),b.end(),bind2nd(Eraser(),a)), b.end());
</code></pre>
<p>Leider schluckt das der MinGW nicht, aber der neue Turbo C++.<br />
Also ist da wahrscheinlich noch nen Fehler der nicht &quot;gesund&quot; ist.</p>
<p>MinGW:</p>
<pre><code>C:\Dev-Cpp\include\c++\3.4.2\bits\stl_function.h In member function `typename
 _Operation::result_type std::binder2nd&lt;_Operation&gt;::operator()(typename 
_Operation::first_argument_type&amp;) const [with _Operation = Eraser]': 

1074 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algo.h   instantiated from 
`_OutputIterator std::remove_copy_if(_InputIterator, _InputIterator, 
_OutputIterator, _Predicate) [with _InputIterator = 
__gnu_cxx::__normal_iterator&lt;int*, std::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt;, 
_OutputIterator = __gnu_cxx::__normal_iterator&lt;int*, std::vector&lt;int, 
std::allocator&lt;int&gt; &gt; &gt;, _Predicate = std::binder2nd&lt;Eraser&gt;]' 

1149 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algo.h   instantiated from 
`_ForwardIterator std::remove_if(_ForwardIterator, _ForwardIterator, _Predicate)
 [with _ForwardIterator = __gnu_cxx::__normal_iterator&lt;int*, std::vector&lt;int,
 std::allocator&lt;int&gt; &gt; &gt;, _Predicate = std::binder2nd&lt;Eraser&gt;]' 

38 C:\Dev-Cpp\fffff.cpp   instantiated from here 

446 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_function.h passing `const Eraser' as 
`this' argument of `bool Eraser::operator()(int, std::vector&lt;int, 
std::allocator&lt;int&gt; &gt;)' discards qualifiers
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1139798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139798</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 18 Sep 2006 16:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to Komplizierte Verkettung mit for_each und remove_if mit Binder bauen on Mon, 18 Sep 2006 18:09:27 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<pre><code>[...] discards qualifiers
</code></pre>
</blockquote>
<p>das verweist auf eine verbotene konvertierung, die const/volatile-qualifizierung ignoriert. und tatsächlich: der operator sollte const sein. in jedem falle ist das allerdings nicht gesuchte lösung, die ja ohne selbstgebaute prädikate auskommen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139905</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 18 Sep 2006 18:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to Komplizierte Verkettung mit for_each und remove_if mit Binder bauen on Mon, 18 Sep 2006 18:18:08 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>das verweist auf eine verbotene konvertierung, die const/volatile-qualifizierung ignoriert. und tatsächlich: der operator sollte const sein.</p>
</blockquote>
<p>Jetzt funktionierts, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139913</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 18 Sep 2006 18:18:08 GMT</pubDate></item></channel></rss>