<?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[STL Vector Grösse]]></title><description><![CDATA[<p>Hi !!!</p>
<p>Ich habe mir ein kleines Testprogramm geschrieben um mir die Kapazität und die Grösse des Vektors vor Augn zu halten und dabei ist etwas rausgekommen, was ich nicht verstehe.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main() {
  vector&lt;int&gt; test;
  test.reserve(10);
  cout &lt;&lt; test.capacity() &lt;&lt; endl;  //Ausgabe 10  OK
  test[3] = 3;
  cout &lt;&lt; test.size() &lt;&lt; endl;  //Ausgabe 0 ???  
  for( int i = 0; i &lt; test.capacity(); i++ )
    cout &lt;&lt; test[i] &lt;&lt; &quot; &quot;;  //Ausgabe  0 0 0 3 0 0 0 0 0    OK
  cout &lt;&lt; endl;
}
</code></pre>
<p>Das verstehe ich nicht. Ich dachte, dass wenn ich einen Speicherbereich reserviere für den Vektor, dass dann wenn ich das Element hinzufüge, dass sich die tatsächliche Grösse des Vektors ändert. Ich hatte da 4 erwartet, oder zumindest 1, aber 0 ?<br />
Das Element ist aber im Vektor drin wie ich an der Ausgabe der einzelnen Elemente sehe. Warum ist die tatächliche Grösse des Vektors immer noch 0 ?<br />
Wie kann ich sehen wieviele Elemente im Vektor drin sind, ich meine hier das was ich mir unter size() vorgestellt habe, d.h. im oberen Beispiel eine 4 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145064/stl-vector-grösse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 20:39:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145064.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Apr 2006 14:55:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 14:55:15 GMT]]></title><description><![CDATA[<p>Hi !!!</p>
<p>Ich habe mir ein kleines Testprogramm geschrieben um mir die Kapazität und die Grösse des Vektors vor Augn zu halten und dabei ist etwas rausgekommen, was ich nicht verstehe.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main() {
  vector&lt;int&gt; test;
  test.reserve(10);
  cout &lt;&lt; test.capacity() &lt;&lt; endl;  //Ausgabe 10  OK
  test[3] = 3;
  cout &lt;&lt; test.size() &lt;&lt; endl;  //Ausgabe 0 ???  
  for( int i = 0; i &lt; test.capacity(); i++ )
    cout &lt;&lt; test[i] &lt;&lt; &quot; &quot;;  //Ausgabe  0 0 0 3 0 0 0 0 0    OK
  cout &lt;&lt; endl;
}
</code></pre>
<p>Das verstehe ich nicht. Ich dachte, dass wenn ich einen Speicherbereich reserviere für den Vektor, dass dann wenn ich das Element hinzufüge, dass sich die tatsächliche Grösse des Vektors ändert. Ich hatte da 4 erwartet, oder zumindest 1, aber 0 ?<br />
Das Element ist aber im Vektor drin wie ich an der Ausgabe der einzelnen Elemente sehe. Warum ist die tatächliche Grösse des Vektors immer noch 0 ?<br />
Wie kann ich sehen wieviele Elemente im Vektor drin sind, ich meine hier das was ich mir unter size() vorgestellt habe, d.h. im oberen Beispiel eine 4 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044072</guid><dc:creator><![CDATA[bucada]]></dc:creator><pubDate>Mon, 24 Apr 2006 14:55:15 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 14:57:21 GMT]]></title><description><![CDATA[<p>Du hast kein Element hinzugefügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044076</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Apr 2006 14:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 14:58:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Elemente fügst du mit push_back hinzu. Reserve ändert die Größe des Vektors nicht. Genau genommen ist dein test[3] = 3; unzulässig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044079</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 24 Apr 2006 14:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:02:17 GMT]]></title><description><![CDATA[<p>mit reserve stellst Du nur sicher, dass der vector min. 10 Elemente aufnehmen kann, bevor der Speicher neu angefordert werden muss. Um einen vector der Groesse 10 zu erzeugen, musst Du resize(10) benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044083</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:03:37 GMT]]></title><description><![CDATA[<p>Hm, doch push_back fügt mir nicht an der 3-ten Stelle was ein sondern am Ende des Vektors und zudem ist es sehr teuer wie ich gelesen habe.<br />
Muss ich somit erst test.resize() machen und dann die Elemente hinzufügen?<br />
Doch dann ist mir der Sinn von reserved nicht so ganz klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044084</guid><dc:creator><![CDATA[bucada]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:03:37 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:10:13 GMT]]></title><description><![CDATA[<p>Mit reserve() sagt man dem Container sozusagen, was auf ihn zukommt. So kann er sich direkt genug Speicher für die kommenden Elemente sichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044088</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:14:21 GMT]]></title><description><![CDATA[<p>Mit reserve kannst du zum erhindern, dass an zeitkritischen punkten ein resize durchgeführt wird.<br />
Du kannst natürlich auf das Element mit index 3 zugreifen, nachdem du mindestens vier eingefügt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044092</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:17:25 GMT]]></title><description><![CDATA[<p>bucada schrieb:</p>
<blockquote>
<p>[...] und zudem ist es [push_back] sehr teuer wie ich gelesen habe.</p>
</blockquote>
<p>Das stimmt nicht! Die push_back-Operation ist sehr schnell.</p>
<p>&lt;a href= schrieb:</p>
<blockquote>
<p><a href="http://www.cppreference.com/cppvector/push_back.html" rel="nofollow">http://www.cppreference.com/cppvector/push_back.html</a>&quot;&gt;push_back() runs in constant time.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1044096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044096</guid><dc:creator><![CDATA[michba]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:19:35 GMT]]></title><description><![CDATA[<p>push_back ist schnell solange kein resize gemacht werden muss, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044098</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:21:44 GMT]]></title><description><![CDATA[<p>templäd schrieb:</p>
<blockquote>
<p>push_back ist schnell solange kein resize gemacht werden muss, oder?</p>
</blockquote>
<p>Schon, nur ist es halt nicht langsamer, als wenn man erst resize macht und dann über den []operator &quot;hinzufügt&quot;. Für's resize ist push_back halt gedacht, und wem es zu lahm ist, der macht halt vorher ein reserve().</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044101</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:21:44 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:24:12 GMT]]></title><description><![CDATA[<p>-predator- schrieb:</p>
<blockquote>
<p>Das stimmt nicht! Die push_back-Operation ist sehr schnell.</p>
<p>&lt;a href= schrieb:</p>
<blockquote>
<p><a href="http://www.cppreference.com/cppvector/push_back.html" rel="nofollow">http://www.cppreference.com/cppvector/push_back.html</a>&quot;&gt;push_back() runs in constant time.</p>
</blockquote>
</blockquote>
<p>Das sagt nichts darüber aus, ob es schnell geht. Das bedeutet nur, dass die Zeit unabhängig von der Anzahl der Elemente des vectors ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044102</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:24:38 GMT]]></title><description><![CDATA[<p>Man kann auch im Konstruktor schon eine Größe vorgeben.</p>
<pre><code class="language-cpp">vector&lt;int&gt; test(10);
</code></pre>
<p>erzeugt einen vector mit 10 Elementen. d.h. hier wäre test[3] = 1; zulässig und size() würde 10 zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044103</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 15:26:01 GMT]]></title><description><![CDATA[<p>Was manche vielleicht stören könnte, ist dass push_back gewöhnlich die Reserve bei zu kleinen vector-Containern verdoppelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044104</guid><dc:creator><![CDATA[winheis]]></dc:creator><pubDate>Mon, 24 Apr 2006 15:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to STL Vector Grösse on Mon, 24 Apr 2006 17:18:03 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>-predator- schrieb:</p>
<blockquote>
<p>Das stimmt nicht! Die push_back-Operation ist sehr schnell.</p>
<p>&lt;a href= schrieb:</p>
<blockquote>
<p><a href="http://www.cppreference.com/cppvector/push_back.html" rel="nofollow">http://www.cppreference.com/cppvector/push_back.html</a>&quot;&gt;push_back() runs in constant time.</p>
</blockquote>
</blockquote>
<p>Das sagt nichts darüber aus, ob es schnell geht. Das bedeutet nur, dass die Zeit unabhängig von der Anzahl der Elemente des vectors ist.</p>
</blockquote>
<p>OK, da hast du natürlich recht; ich hätte noch einen Satz dazu schreiben sollen.<br />
Nichtsdestotrotz ist push_back() schnell. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044253</guid><dc:creator><![CDATA[michba]]></dc:creator><pubDate>Mon, 24 Apr 2006 17:18:03 GMT</pubDate></item></channel></rss>