<?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[Frage zum erase &#x2F; remove Idiom]]></title><description><![CDATA[<p>Hallo,<br />
in dem Buch &quot;Efficient STL&quot; (von Scott Meyers) habe ich vom &quot;remove erase Idiom&quot; gelesen, wenn man einen Bereich aus einem sequenziellen Container löschen will:</p>
<pre><code class="language-cpp">vector c; //...
c.erase( remove(c.begin(), c.end(), ObjectValue), c.end() );
</code></pre>
<p>Die Frage, die mir bei diesem Idiom gekommen ist: Warum benutzt man hier erase und nicht resize? Mein Gedankengang war, dass resize ja gerade dafür spezialisiert ist, elemente AM ENDE zu entfernen.<br />
Warum wurde sich hier trotzdem für erase entschieden? Liegt es daran, dass erase vom Namen her aussagekräftiger ist? Oder gibt es andere Gründe, wo ich irgendwelche Eigenschaften von resize übersehe?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288008/frage-zum-erase-remove-idiom</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 04:12:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288008.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Jun 2011 17:15:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zum erase &#x2F; remove Idiom on Wed, 08 Jun 2011 17:15:05 GMT]]></title><description><![CDATA[<p>Hallo,<br />
in dem Buch &quot;Efficient STL&quot; (von Scott Meyers) habe ich vom &quot;remove erase Idiom&quot; gelesen, wenn man einen Bereich aus einem sequenziellen Container löschen will:</p>
<pre><code class="language-cpp">vector c; //...
c.erase( remove(c.begin(), c.end(), ObjectValue), c.end() );
</code></pre>
<p>Die Frage, die mir bei diesem Idiom gekommen ist: Warum benutzt man hier erase und nicht resize? Mein Gedankengang war, dass resize ja gerade dafür spezialisiert ist, elemente AM ENDE zu entfernen.<br />
Warum wurde sich hier trotzdem für erase entschieden? Liegt es daran, dass erase vom Namen her aussagekräftiger ist? Oder gibt es andere Gründe, wo ich irgendwelche Eigenschaften von resize übersehe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075336</guid><dc:creator><![CDATA[50STLTIPPS]]></dc:creator><pubDate>Wed, 08 Jun 2011 17:15:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zum erase &#x2F; remove Idiom on Wed, 08 Jun 2011 17:18:25 GMT]]></title><description><![CDATA[<p>Ja, resize() gibt es afaik nicht für jeden Container. Außerdem benötigt es die Anzahl der überlebenden Elemente, so daß du umrechnen mußt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075340</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 08 Jun 2011 17:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zum erase &#x2F; remove Idiom on Wed, 08 Jun 2011 17:22:21 GMT]]></title><description><![CDATA[<p>50STLTIPPS schrieb:</p>
<blockquote>
<p>Mein Gedankengang war, dass resize ja gerade dafür spezialisiert ist, elemente AM ENDE zu entfernen.</p>
</blockquote>
<p>Nicht unbedingt. Erase ist eigentlich die weniger spezialisierte Version der beiden Funktionen. Resize ist laut Standard äquivalent zu</p>
<pre><code class="language-cpp">void resize ( size_type sz , T c = T ())
{
 if ( sz &gt; size ())
  insert ( end () , sz - size () , c );
 else if ( sz &lt; size ())
  erase ( begin ()+ sz , end ());
 else
  ;
}
</code></pre>
<p>Das darf ein Container natürlich auch anders implementieren.</p>
<p>Aber der Name dürfte auch eine gewichtige Rolle spielen, schließlich will man löschen und nicht die Größe ändern. Der semantische Unterschied ist gewaltig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075341</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 08 Jun 2011 17:22:21 GMT</pubDate></item></channel></rss>