<?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 zur &amp;quot;std::vector&amp;quot; Klasse]]></title><description><![CDATA[<p>Hi,</p>
<p>ich vermute mal, dass die &quot;vector&quot; Klasse aus der STL. nicht bei jedem &quot;push_back&quot; erneut &quot;new&quot; aufruft und den alten Speicher in den neuen größeren kopiert. Soweit ich weiß allokiert die Klasse immer erst neuen Speicher wenn der zuvor angeforderte wieder voll ist.<br />
Also müsste die Klasse mindestens 3 Komponenten haben, ungefähr so:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class vector
{
/* ... */
private:

T* data; // der Speicher pointer
int length; // tatsaechliche leange des Speichers
int used_length; // benutze laenge des Speichers

};
</code></pre>
<p>Wenn das in keinster Weise der Fall ist, korrigiert mich bitte. Falls es zum Teil richtig ist, dann ist meine eigentliche Frage folgende:<br />
um wie viel Elemente vergrößert die Klasse vector den Speicher, wenn neuer Speicher angevordert werden muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239618/frage-zur-quot-std-vector-quot-klasse</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 12:06:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239618.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Apr 2009 18:39:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sat, 25 Apr 2009 18:47:10 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich vermute mal, dass die &quot;vector&quot; Klasse aus der STL. nicht bei jedem &quot;push_back&quot; erneut &quot;new&quot; aufruft und den alten Speicher in den neuen größeren kopiert. Soweit ich weiß allokiert die Klasse immer erst neuen Speicher wenn der zuvor angeforderte wieder voll ist.<br />
Also müsste die Klasse mindestens 3 Komponenten haben, ungefähr so:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class vector
{
/* ... */
private:

T* data; // der Speicher pointer
int length; // tatsaechliche leange des Speichers
int used_length; // benutze laenge des Speichers

};
</code></pre>
<p>Wenn das in keinster Weise der Fall ist, korrigiert mich bitte. Falls es zum Teil richtig ist, dann ist meine eigentliche Frage folgende:<br />
um wie viel Elemente vergrößert die Klasse vector den Speicher, wenn neuer Speicher angevordert werden muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701250</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Sat, 25 Apr 2009 18:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sat, 25 Apr 2009 18:46:53 GMT]]></title><description><![CDATA[<p>normalerweise verdoppelt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701252</guid><dc:creator><![CDATA[normal]]></dc:creator><pubDate>Sat, 25 Apr 2009 18:46:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sat, 25 Apr 2009 18:47:49 GMT]]></title><description><![CDATA[<p>Bist du sicher? Das würde dann irgendwann ziehmlich groß werden, oder?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701253</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Sat, 25 Apr 2009 18:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sat, 25 Apr 2009 19:13:07 GMT]]></title><description><![CDATA[<p>C++ ist Open-Source, guck in den Kot <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701261</guid><dc:creator><![CDATA[oO]]></dc:creator><pubDate>Sat, 25 Apr 2009 19:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sat, 25 Apr 2009 19:27:43 GMT]]></title><description><![CDATA[<p>LukasBanana schrieb:</p>
<blockquote>
<p>Bist du sicher? Das würde dann irgendwann ziehmlich groß werden, oder?!</p>
</blockquote>
<p>Vielleicht brauchst du ja auch irgendwann ziemlich viele Elemente?</p>
<p>Soviel ich weiss, ist das Vergrösserungsverhalten nicht im C++-Standard geregelt. Viele Implementierungen benutzen allerdings die Verdoppelungsstrategie. Im Weiteren kannst du solche Dinge auch nachschauen, indem du den Code deiner Standardbibliothek öffnest. Oder indem du mit <code>capacity()</code> experimentierst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701268</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 25 Apr 2009 19:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sat, 25 Apr 2009 21:19:52 GMT]]></title><description><![CDATA[<p>LukasBanana schrieb:</p>
<blockquote>
<p>Bist du sicher? Das würde dann irgendwann ziehmlich groß werden, oder?!</p>
</blockquote>
<p>Dann ist der vector aber auch vielleicht die falsche Wahl gewesen (Wenn man die Größe abschätzen kann muss man reserve einsetzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701306</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sat, 25 Apr 2009 21:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sun, 26 Apr 2009 02:12:32 GMT]]></title><description><![CDATA[<p>Ich weiss nicht ob verdoppeln üblich ist. Ich habe mal gesehen dass Faktor 1,5 verwendet wurde.<br />
Eine Vergrösserung um fixe oder &quot;gedeckelte&quot; Beträge ist auf jeden Fall nicht möglich, da der Standard z.B. für push_back amortisiert konstante Laufzeit vorscheibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701339</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 26 Apr 2009 02:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur &amp;quot;std::vector&amp;quot; Klasse on Sun, 26 Apr 2009 07:04:52 GMT]]></title><description><![CDATA[<p>Wenn die STL nicht so extrem frickeligen Code hätte... unmenschlich...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701346</guid><dc:creator><![CDATA[Meck0r]]></dc:creator><pubDate>Sun, 26 Apr 2009 07:04:52 GMT</pubDate></item></channel></rss>