<?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[vector.erase()]]></title><description><![CDATA[<p>Hoi</p>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     FileSizeVector.erase(FileSizeVector.begin()+2);
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
<p>Wieso bekomme ich hier imm nur ABC ausgeben eigentlich müsste doch das letzte Element gelöscht werden oder nicht?</p>
<p>Also ich dachte ich könnte mit erase sowas machen:</p>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');

     FileSizeVector[FileSizeVector.size()-1]='\x00';
     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
<p>Setzte ich erase falsch ein oder hab ich da was falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308321/vector-erase</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 21:53:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308321.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2012 08:24:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:24:28 GMT]]></title><description><![CDATA[<p>Hoi</p>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     FileSizeVector.erase(FileSizeVector.begin()+2);
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
<p>Wieso bekomme ich hier imm nur ABC ausgeben eigentlich müsste doch das letzte Element gelöscht werden oder nicht?</p>
<p>Also ich dachte ich könnte mit erase sowas machen:</p>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');

     FileSizeVector[FileSizeVector.size()-1]='\x00';
     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
<p>Setzte ich erase falsch ein oder hab ich da was falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253184</guid><dc:creator><![CDATA[Datenlöscher]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:24:28 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:31:25 GMT]]></title><description><![CDATA[<p>Wenn du mich fragst, setzt du erase richtig ein. Aber cout falsch.</p>
<pre><code class="language-cpp">cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
<p>Was glaubst du denn was das macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253185</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:37:08 GMT]]></title><description><![CDATA[<p>Mir den kompletten Vector ausgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253186</guid><dc:creator><![CDATA[Datenlöscher]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:37:08 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:37:51 GMT]]></title><description><![CDATA[<p>Datenlöscher schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     FileSizeVector.erase(FileSizeVector.begin()+2);
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
</blockquote>
<p>Du hast nach dem Einfügen in den vector 3 Daten hintereinander im Speicher stehen. A|B|C. Dann löschst du den letzen Eintrag im vector. Dabei wird auch der reservierte Speicherplatz für das Datum (C) freigegeben. Damit hat dein vector noch zwei Elemente. Das heißt aber nicht, dass sich im Speicherbereich etwas getan haben muss. Da kann sehr wohl immernoch A|B|C stehen, nur dass deinem Programm das C nicht mehr gehört. Da du dem Ausgabeoperator ein Zeiger auf einen char lieferst, wird einfach solange etwas ausgegeben, bis man auf das Terminierungszeichen '\0' stößt. Dieses Zeichen befindet sich wohl nach dem C, darum wird ABC ausgegeben.<br />
Insgesamt hast du damit 2 Fehler gemacht:<br />
1. Du greifst mit der Ausgabe auf einen Speicherbereich zu, der dir nicht gehört. Das mag wohl immer gut gehen,da du nur lesend und nicht schreibend zugreifst.<br />
2. Du hantierst mit Zeichenketten und benutzt vector&lt;char&gt;. Für solche Dinge wurde bereits std::string erfunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253187</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:38:59 GMT]]></title><description><![CDATA[<p>Die Antwort hab ich erwartet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     FileSizeVector.erase(FileSizeVector.begin()+2);
     FileSizeVector.push_back('\0'); //tu das hier mal in deinen code rein, schaue und staune
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2253188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253188</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:43:02 GMT]]></title><description><![CDATA[<p>KMT schrieb:</p>
<blockquote>
<p>Die Antwort hab ich erwartet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<pre><code class="language-cpp">vector&lt;char&gt;FileSizeVector;
     FileSizeVector.push_back('A');
     FileSizeVector.push_back('B');
     FileSizeVector.push_back('C');
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     FileSizeVector.erase(FileSizeVector.begin()+2);
     FileSizeVector.push_back('\0'); //tu das hier mal in deinen code rein, schaue und staune
     cout&lt;&lt;&quot;size: &quot; &lt;&lt;FileSizeVector.size()&lt;&lt;endl;

     cout&lt;&lt;&amp;FileSizeVector[0]&lt;&lt;endl;
</code></pre>
</blockquote>
<p>Was gibt es da zu staunen, verstehe ich nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253191</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:43:52 GMT]]></title><description><![CDATA[<p>Aso, du meinst Ihn, nicht mich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253192</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:44:25 GMT]]></title><description><![CDATA[<p>War nicht and dich gerichtet - ging darum das dann eben nur AB ausgegeben wird, da er früher eine 0-Terminierung findet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253194</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:45:13 GMT]]></title><description><![CDATA[<p>Du gibst einen char* aus, nicht &quot;den ganzen Vector&quot;. Und das Ende der Ausgabe hängt damit nur davon ab, wo im Speicher eine Nullterminierung steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253195</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:47:55 GMT]]></title><description><![CDATA[<p>Datenlöscher schrieb:</p>
<blockquote>
<p>Mir den kompletten Vector ausgeben.</p>
</blockquote>
<p>Genau hier ist der Denkfehler: Du gibst nicht &quot;den kompletten Vector&quot; aus, sondern alle Zeichen, die zwischen dem ersten Element des Vector und dem ersten Nullbyte, das darauf folgt, liegen. Beim Löschen eines Elements wird dieses ja aber nicht durch 0 ersetzt (warum auch).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253197</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:47:55 GMT</pubDate></item><item><title><![CDATA[Reply to vector.erase() on Fri, 21 Sep 2012 08:51:09 GMT]]></title><description><![CDATA[<p>Stimmt, das erinnert mich an meine experimente mit new delete und einem Debugger.^^</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2253198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2253198</guid><dc:creator><![CDATA[Datenlöscher]]></dc:creator><pubDate>Fri, 21 Sep 2012 08:51:09 GMT</pubDate></item></channel></rss>