<?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[Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich hab zu Testzwecken folgenden Code erstellt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main(){
	vector&lt;int&gt; values;
	cout &lt;&lt; &quot;values.capacity(): &quot; &lt;&lt; values.capacity() &lt;&lt; endl;
	values.reserve(3);
	cout &lt;&lt; &quot;values.size(): &quot; &lt;&lt; values.size() &lt;&lt; endl;
	values[0] = 0;
	values[1] = 1;
	values[2] = 2;
	cout &lt;&lt; &quot;values.capacity(): &quot; &lt;&lt; values.capacity() &lt;&lt; endl;
	cout &lt;&lt; &quot;values.size(): &quot; &lt;&lt; values.size() &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Eigentlich müsste der Vektor doch 3 Elemente haben. Aber ich bekomme diese Ausgabe:</p>
<pre><code>values.capacity(): 0
values.size(): 0
values.capacity(): 3
values.size(): 0
</code></pre>
<p>Am Ende müsste bei size() doch ne 3 stehen. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247993/kann-werte-in-vector-lt-int-gt-nicht-reinschreiben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 07:07:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247993.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Aug 2009 12:53:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 12:53:40 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich hab zu Testzwecken folgenden Code erstellt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

int main(){
	vector&lt;int&gt; values;
	cout &lt;&lt; &quot;values.capacity(): &quot; &lt;&lt; values.capacity() &lt;&lt; endl;
	values.reserve(3);
	cout &lt;&lt; &quot;values.size(): &quot; &lt;&lt; values.size() &lt;&lt; endl;
	values[0] = 0;
	values[1] = 1;
	values[2] = 2;
	cout &lt;&lt; &quot;values.capacity(): &quot; &lt;&lt; values.capacity() &lt;&lt; endl;
	cout &lt;&lt; &quot;values.size(): &quot; &lt;&lt; values.size() &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Eigentlich müsste der Vektor doch 3 Elemente haben. Aber ich bekomme diese Ausgabe:</p>
<pre><code>values.capacity(): 0
values.size(): 0
values.capacity(): 3
values.size(): 0
</code></pre>
<p>Am Ende müsste bei size() doch ne 3 stehen. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762865</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Tue, 18 Aug 2009 12:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 12:56:28 GMT]]></title><description><![CDATA[<p>Lies dir nochmal die Doku zum vector durch. reserve() <em>reserviert</em> eben nur Speicher, sorgt also dafür dass sich der vector mehr Speicher unter den Nagel reißt, aber noch keine neuen Objekte anlegt.<br />
resize() hingegen vergrößert tatsächlich den vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762866</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 18 Aug 2009 12:56:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:04:43 GMT]]></title><description><![CDATA[<p>Ja, das hab ich verstanden, aber das erzeugt weitere Probleme. Ich hab z.B. die Zeile &quot;values[2]=2&quot; auskommentiert. Und trotzdem kriege ich für size()=3 raus.</p>
<pre><code>values.capacity(): 0
values.size(): 3
values.capacity(): 3
values.size(): 3
</code></pre>
<p>In einem Algorithmus von mir, wo ich halt diese Funktionen benutze, muss ich ständig den Vektorinhalt zählen, und zwar von MIR eingesetzte Objekte und nicht die, die beim Compilieren &quot;vor&quot;erzeugt wurden durch resize()...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762870</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:11:33 GMT]]></title><description><![CDATA[<p>Dann hast Du vector nicht verstanden. Wenn Du den Vector auf n Elemente <strong>vergrößerst</strong>, enthält er nunmal danach n Elemente. Um Elemente als &quot;ungültig&quot; zu markieren, musst Du eine Eigenschaft des Elements nutzen, nicht eine des Vectors. int eignet sich da nur bedingt, es seidenn Du kannst einen int-Wert (z.B. 0 oder -1 oder ...) als ungültig definieren. Aber selbst dann musst Du durch alle Elemente durchzählen, um die Anzahl der gültigen zu ermitteln.</p>
<p>Evtl. wäre eine map&lt;size_t,int&gt; was für Dich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762880</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:12:58 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>Ja, das hab ich verstanden, aber das erzeugt weitere Probleme. Ich hab z.B. die Zeile &quot;values[2]=2&quot; auskommentiert. Und trotzdem kriege ich für size()=3 raus.</p>
</blockquote>
<p>Lies dir NOCHMAL die Dokumentation von vector durch. resize() vergrößert tatsächlich den vector. Der wird nicht wieder kleiner, weil du ein Element nicht benutzt.</p>
<blockquote>
<p>In einem Algorithmus von mir, wo ich halt diese Funktionen benutze, muss ich ständig den Vektorinhalt zählen, und zwar von MIR eingesetzte Objekte und nicht die, die beim Compilieren &quot;vor&quot;erzeugt wurden durch resize()...</p>
</blockquote>
<p>Was spricht dagegen, den vector wie eigentlich vorgesehen mit push_back() und pop_back() zu füllen/leeren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762883</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:20:23 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Evtl. wäre eine map&lt;size_t,int&gt; was für Dich?</p>
</blockquote>
<p>Ich muss vector benutzen, die Datenstrukturen sind vorgegeben und mithilfe von vector implementiert.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Was spricht dagegen, den vector wie eigentlich vorgesehen mit push_back() und pop_back() zu füllen/leeren?</p>
</blockquote>
<p>Weil ich fast die ganze Zeit Werte mittendrin reinlegen oder rausnehmen muss. Ich schaue mir am besten mal an, wie die anderen Funktionen der Datenstruktur implementiert wurden. Ich kenne ihr Ergebnis nur über Schnittstellenbeschreibung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762889</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:20:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:25:02 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Was spricht dagegen, den vector wie eigentlich vorgesehen mit push_back() und pop_back() zu füllen/leeren?</p>
</blockquote>
<p>Würde ich auch meinen; nicht benötigte Objekte zu speichern ist etwas fragwürdig. Du kannst auch <code>erase()</code> und <code>clear()</code> zum Löschen einsetzen, je nach Anforderung halt. Allerdings rate ich dir auch, unbedingt die einzelnen Funktionen auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> nachzuschlagen und eventuell die Grundlagen im <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">STL-Artikel</a> nochmals genau durchzugehen.</p>
<p>lil_pingu schrieb:</p>
<blockquote>
<p>Weil ich fast die ganze Zeit Werte mittendrin reinlegen oder rausnehmen muss. Ich schaue mir am besten mal an, wie die anderen Funktionen der Datenstruktur implementiert wurden. Ich kenne ihr Ergebnis nur über Schnittstellenbeschreibung.</p>
</blockquote>
<p>Kommt es bei dir auf die Reihenfolge an? Sonst kannst du <code>std::vector</code> sehr effizient nutzen, indem du zu löschende Elemente mit Elementen am Schluss vertauschst und dann innerhalb von O(1), also konstanter Zeitkomplexität, löschen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762890</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:28:29 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>Weil ich fast die ganze Zeit Werte mittendrin reinlegen oder rausnehmen muss. Ich schaue mir am besten mal an, wie die anderen Funktionen der Datenstruktur implementiert wurden. Ich kenne ihr Ergebnis nur über Schnittstellenbeschreibung.</p>
</blockquote>
<p>Das klingt so, als sein std::vector da die völlig falsche Wahl. Das klingt eher nach einem Fall für std::list oder std::set. Guck mal in dem vom Nexus angegebenen Artikel oder hier:<br />
<a href="http://www.linuxsoftware.co.nz/containerchoice.png" rel="nofollow">http://www.linuxsoftware.co.nz/containerchoice.png</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762892</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:45:11 GMT]]></title><description><![CDATA[<p>Ich arbeite mit Harwell-Boeing-Matrizen, weil die Matrizen, die eine Simulation liefert, eben sparse matrices sind und demnach verdammt viele 0en besitzen. Ich muss halt ne Funktion implementieren, die auf dieser Matrix arbeitet. Üblicherweise werden diese Matrizen mithilfe von drei Arrays realisiert, allerdings benutzen die Leute, für die ich die Codes schreibe, stattdessen vector, da die Größe der Gleichungssysteme und demnach die Länge dieser Arrays dynamischn sein sollten...wie auch immer, die benutzen halt vector, ich muss für sie etwas implementieren, also muss ich mich an ihr framework halten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Deshalb sollte ich schon bei der vector-bib bleiben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762903</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:45:11 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:47:02 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>Ich arbeite mit Harwell-Boeing-Matrizen, weil die Matrizen, die eine Simulation liefert, eben sparse matrices sind und demnach verdammt viele 0en besitzen. Ich muss halt ne Funktion implementieren, die auf dieser Matrix arbeitet. Üblicherweise werden diese Matrizen mithilfe von drei Arrays realisiert, allerdings benutzen die Leute, für die ich die Codes schreibe, stattdessen vector, da die Größe der Gleichungssysteme und demnach die Länge dieser Arrays dynamischn sein sollten...wie auch immer, die benutzen halt vector, ich muss für sie etwas implementieren, also muss ich mich an ihr framework halten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Deshalb sollte ich schon bei der vector-bib bleiben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>Ok, die Problemstellung ist somit klar. Hast du jetzt noch konkrete Fragen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762906</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:47:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Tue, 18 Aug 2009 13:53:00 GMT]]></title><description><![CDATA[<p>Im Moment keine. Aber wenn sich diesbzgl. weitere Fragen erstellen, werde ich sie in diesem Thread stellen, damit für andere, die die &quot;Vorgeschichte&quot; nicht kennen, der Zusammenhang ersichtlich wird.</p>
<p>Vielen Dank trotzdem für eure Tipps.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762909</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Tue, 18 Aug 2009 13:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Wed, 19 Aug 2009 09:21:01 GMT]]></title><description><![CDATA[<p>Hallo, Leute.</p>
<p>Nun hab ich doch eine Frage. Nehmen wir an, ich mache folgendes:</p>
<pre><code class="language-cpp">// resizing vector
#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

int main ()
{
	vector&lt;int&gt; myvector;
	myvector.reserve(3);

	return 0;
}
</code></pre>
<p>Der Compiler reserviert quasi Speicher für mindestens 3 Elemente oder mehr, aber Objekte hab ich noch nicht. Nehmen wir an, der Compiler hat Platz für 3 reserviert und ich füge aber mehr Elemente hinein. Kann das böse Folgen haben? Meiner Meinung nach sollte das eigentlich nicht sein, weil vector ja sowas wie ein dynam. Array ist und dem Benutzer keine Probleme machen darf/sollte...muss ich mich also um die mögliche Überschreitung des allozierten Speicherbereiches kümmern? <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="😕"
    /> <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="😕"
    /> <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/1763283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763283</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Wed, 19 Aug 2009 09:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Wed, 19 Aug 2009 09:23:44 GMT]]></title><description><![CDATA[<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763286</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 19 Aug 2009 09:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Wed, 19 Aug 2009 09:39:09 GMT]]></title><description><![CDATA[<p>Nein, <code>std::vector</code> fordert automatisch neuen Speicherbereich an, wenn seine Kapazität erschöpft ist. Das einzige, was dabei Probleme machen <em>kann</em>, ist die verlorene Zeit. Aber lass dir gesagt sein, dass das erst ab vielen grossen Elementen (z.B. mehrere Millionen) etwas ausmacht und auch nur dann, wenn es sich um eine performancekritische Anwendung handelt, was längst nicht immer der Fall ist. Meist besteht absolut kein Grund zur Sorge, schon gar nicht, wenn es so wenige Elemente sind.</p>
<p>Also füge ruhigen Gewissens Elemente hinzu. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763292</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 19 Aug 2009 09:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Werte in vector&amp;lt;int&amp;gt; nicht reinschreiben on Wed, 19 Aug 2009 10:04:40 GMT]]></title><description><![CDATA[<p>Falls die Größe deines dynamischen Containers sich während des Programmverlaufs wild ändert, kann es günstiger sein, eine deque anstelle eines vectors zu verwenden, da diese effizienter beim Ändern der Größe sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763313</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 19 Aug 2009 10:04:40 GMT</pubDate></item></channel></rss>