<?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 vor erneuter Zuweisung leeren?]]></title><description><![CDATA[<p>Jepp, er nu wieder! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">vector &lt;string&gt; test()
{
	vector &lt;string&gt; vs;
	string s (&quot;ABC&quot;);
	vs.push_back (s);
	return vs;
}
int main() 
{ 
	vector &lt;string&gt; v;
	for ( int i=0; i&lt;10; i++ )
	{
		v = test();
		v.clear(); // Kann man die Zeile auch weglassen?
	}
	return 0;
}
</code></pre>
<p>Ich frage mich gerade: was passiert eigentlich, wenn man die Zeile 14 weglässt?<br />
Die Daten müssten dann irgendwo im RAM bleiben, ohne das man rankommt oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245324/vector-vor-erneuter-zuweisung-leeren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 21:55:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245324.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Jul 2009 19:29:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 19:29:58 GMT]]></title><description><![CDATA[<p>Jepp, er nu wieder! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">vector &lt;string&gt; test()
{
	vector &lt;string&gt; vs;
	string s (&quot;ABC&quot;);
	vs.push_back (s);
	return vs;
}
int main() 
{ 
	vector &lt;string&gt; v;
	for ( int i=0; i&lt;10; i++ )
	{
		v = test();
		v.clear(); // Kann man die Zeile auch weglassen?
	}
	return 0;
}
</code></pre>
<p>Ich frage mich gerade: was passiert eigentlich, wenn man die Zeile 14 weglässt?<br />
Die Daten müssten dann irgendwo im RAM bleiben, ohne das man rankommt oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741679</guid><dc:creator><![CDATA[leer0r]]></dc:creator><pubDate>Sun, 12 Jul 2009 19:29:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 19:43:51 GMT]]></title><description><![CDATA[<p>Ich schätze mal, dass der Speicherbereich einfach überschrieben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741685</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 12 Jul 2009 19:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 21:23:58 GMT]]></title><description><![CDATA[<p>Ich würde die Zeile sogar weglassen. Schliesslich überschreibt <code>operator=</code> den <code>std::vector</code> so oder so, unabhängig davon, was vorher im Container gespeichert war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741754</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 21:29:44 GMT]]></title><description><![CDATA[<p>Und wenn die Inhalte unterschiedlich werden? Also z.B. erster Aufrufer bekommt(&quot;ABCDE&quot;), der zweite bekommt (&quot;ABC&quot;). Dann müsste ja vom ersten etwas im RAM übrig bleiben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741758</guid><dc:creator><![CDATA[leer0r]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 21:38:42 GMT]]></title><description><![CDATA[<p>Was gegebenenfalls im <code>std::vector</code> oder <code>std::string</code> übrig bleibt, wenn er verkleinert wird, hat dich nicht zu interessieren. Das ist implementierungsabhängig und es gibt keinen standardkonformen Weg, an diese Daten zu gelangen. Aber wie gesagt, dafür gibt es auch keinen Grund.</p>
<p>Edit: Falls es dir darum geht, dass die Container richtig aufräumen: Darum musst du dir keine Sorgen machen, das werden sie tun - spätestens im Destruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741765</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 21:40:11 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ich würde die Zeile sogar weglassen. Schliesslich überschreibt <code>operator=</code> den <code>std::vector</code> so oder so, unabhängig davon, was vorher im Container gespeichert war.</p>
</blockquote>
<p>Eventuell wäre es sogar &quot;performancelastiger&quot; (minimal), weil du ja erst wieder Löschoperationen einleiten musst und du somit den bereits reservierten Speicher neu belegst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741767</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Sun, 12 Jul 2009 21:47:45 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Eventuell wäre es sogar &quot;performancelastiger&quot; (minimal), weil du ja erst wieder Löschoperationen einleiten musst und du somit den bereits reservierten Speicher neu belegst.</p>
</blockquote>
<p><code>clear()</code> sollte eigentlich keinen Speicher freigeben, sondern nur die genutzte Grösse auf Null zurückschrauben. Von daher wird es wohl mehr oder weniger auf dasselbe hinauslaufen. Im Zweifelsfall ist nur ein <code>operator=</code> wohl ganz wenig schneller.</p>
<p>Aber abgesehen von solchen Optimierungsüberlegungen ist es auch semantisch nicht sinnvoll, einen Container mit <code>clear()</code> zu leeren, nur um ihn dann wieder zu überschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741774</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:47:45 GMT</pubDate></item><item><title><![CDATA[Reply to Vector vor erneuter Zuweisung leeren? on Mon, 13 Jul 2009 09:24:34 GMT]]></title><description><![CDATA[<p>Bueno, ¡muchas gracias señores!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741955</guid><dc:creator><![CDATA[leer0r]]></dc:creator><pubDate>Mon, 13 Jul 2009 09:24:34 GMT</pubDate></item></channel></rss>