<?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[Index mit dynamischen std::vector]]></title><description><![CDATA[<p>Hi, warum geht folgender Code nicht bzw. was kann ich tun damit es funktioniert?</p>
<pre><code class="language-cpp">std::vector&lt;int&gt;* vec = new vector&lt;int&gt;();
vec-&gt;push_back(42);
int i = vec[0]; // geht nicht
delete vec;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/293473/index-mit-dynamischen-std-vector</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 08:04:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293473.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Oct 2011 19:35:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Mon, 03 Oct 2011 19:35:25 GMT]]></title><description><![CDATA[<p>Hi, warum geht folgender Code nicht bzw. was kann ich tun damit es funktioniert?</p>
<pre><code class="language-cpp">std::vector&lt;int&gt;* vec = new vector&lt;int&gt;();
vec-&gt;push_back(42);
int i = vec[0]; // geht nicht
delete vec;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2126849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126849</guid><dc:creator><![CDATA[Spongebob]]></dc:creator><pubDate>Mon, 03 Oct 2011 19:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Mon, 03 Oct 2011 19:38:12 GMT]]></title><description><![CDATA[<p>Warum machst du dir überhaupt die Mühe, den vector&lt;&gt; auf dem Heap anzulegen? Es reicht völlig, ihn als normale Variable anzulegen.</p>
<p>(wenn du unbedingt mit dem Zeiger arbeiten willst, mußt du ihn auch dereferenzieren, um die vector&lt;&gt;-Methoden nutzen zu können)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126850</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 03 Oct 2011 19:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Mon, 03 Oct 2011 20:12:39 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Warum machst du dir überhaupt die Mühe, den vector&lt;&gt; auf dem Heap anzulegen? Es reicht völlig, ihn als normale Variable anzulegen.</p>
</blockquote>
<p>Weil es dem Fall alles verkomplizieren würde wenn ich ihn als Membervariable anlege.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>(wenn du unbedingt mit dem Zeiger arbeiten willst, mußt du ihn auch dereferenzieren, um die vector&lt;&gt;-Methoden nutzen zu können)</p>
</blockquote>
<p>Wie würde das denn aussehen? Weder</p>
<pre><code class="language-cpp">int i = &amp;vec[0];
</code></pre>
<p>noch</p>
<pre><code>int i = *vec[0];
</code></pre>
<p>funktioniert. Ich vermute mal der []-Operator geht in dem Fall nicht und ich muss die at-Methode verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126861</guid><dc:creator><![CDATA[Spongebob]]></dc:creator><pubDate>Mon, 03 Oct 2011 20:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Mon, 03 Oct 2011 20:20:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int i = (*vec)[0];
</code></pre>
<p>Wieso ist die einzige Alternative zum Heap ne Membervariable? Wieso nicht scopelokal aufm Stack?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126864</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Mon, 03 Oct 2011 20:20:59 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Mon, 03 Oct 2011 20:27:36 GMT]]></title><description><![CDATA[<p>Spongebob schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Warum machst du dir überhaupt die Mühe, den vector&lt;&gt; auf dem Heap anzulegen? Es reicht völlig, ihn als normale Variable anzulegen.</p>
</blockquote>
<p>Weil es dem Fall alles verkomplizieren würde wenn ich ihn als Membervariable anlege.</p>
</blockquote>
<p>Ich fürchte, du verkomplizierst hier wesentlich mehr, indem du den vector per new anlegst. Wir sind hier nicht bei Java oder C#, wo sowas üblich ist - in C++ ist die Speicheranforerung per new eher die Ausnahme als die Regel.<br />
Was willst du eigentlich mit dieser Konstruktion bezwecken? Und wie lange soll der vector&lt;&gt; überhaupt überleben bzw. verwendet werden?</p>
<p>PS: Ich habe übrigens nicht von einer <strong>Member</strong>variable gesprochen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126865</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 03 Oct 2011 20:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Tue, 04 Oct 2011 06:41:19 GMT]]></title><description><![CDATA[<p>Spongebob schrieb:</p>
<blockquote>
<p>Weil es dem <strong>Fall</strong> alles verkomplizieren würde wenn ich ihn als Membervariable anlege.</p>
</blockquote>
<p>Erklär uns doch einfach mal den 'Fall'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126931</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 04 Oct 2011 06:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Tue, 04 Oct 2011 07:45:51 GMT]]></title><description><![CDATA[<p>Spongebob schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::vector&lt;int&gt;* vec = new vector&lt;int&gt;();
vec-&gt;push_back(42);
int i = vec[0]; // geht nicht
delete vec;
</code></pre>
</blockquote>
<p>Ich gehe mal davon aus, dass das ein sehr künstliches Beispiel ist. Aus was für einem Grund auch immer (möglicherweise <em>kein guter!</em>) verwendest Du einen <em>Zeiger</em> auf einen Vektor; denn ein</p>
<pre><code class="language-cpp">T* ptr = new T(...);
...
delete ptr;
</code></pre>
<p>ist in 99% der Fälle einfach eine schlechte Version von</p>
<pre><code class="language-cpp">T obj (...);
...
</code></pre>
<p>und in den restlichen 1% (dann wenn T &quot;zu groß&quot; für den automatischen Speicher ist) hätte es</p>
<pre><code class="language-cpp">const auto_ptr&lt;T&gt; ptr (new T(...));
...
</code></pre>
<p>heißen müssen (bzw unique_ptr in der neuen C++ Version).</p>
<p>Spongebob schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>(wenn du unbedingt mit dem Zeiger arbeiten willst, mußt du ihn auch dereferenzieren, um die vector&lt;&gt;-Methoden nutzen zu können)</p>
</blockquote>
<p>Wie würde das denn aussehen? Weder</p>
<pre><code class="language-cpp">int i = &amp;vec[0];
</code></pre>
<p>noch</p>
<pre><code class="language-cpp">int i = *vec[0];
</code></pre>
<p>funktioniert. Ich vermute mal der []-Operator geht in dem Fall nicht und ich muss die at-Methode verwenden?</p>
</blockquote>
<p>Wenn Du C++ wie ein Ratespiel behandelst, wirst Du damit nicht weit kommen! Stichwort: Operatorpräzedenzen. Siehe Dobi's Antwort. Postifix-Operatoren binden immer stärker als Präfixoperatoren. *vec[0] ist also äquivalent zu *(vec[0]).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2126937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2126937</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 04 Oct 2011 07:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Tue, 04 Oct 2011 21:03:38 GMT]]></title><description><![CDATA[<p>Wie sieht es denn mit dem Gültigkeitsbereich des Vektors aus?<br />
Könnte das nicht ein Argument sein, was dafür spricht, ihn auf dem Heap anzulegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2127330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2127330</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Tue, 04 Oct 2011 21:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Tue, 04 Oct 2011 23:29:01 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>Wie sieht es denn mit dem Gültigkeitsbereich des Vektors aus?<br />
Könnte das nicht ein Argument sein, was dafür spricht, ihn auf dem Heap anzulegen?</p>
</blockquote>
<p>Bedingt, z.B. kann man Vektoren mit C++11-Movesemantik auch günstig von Funktionen zurückgeben.</p>
<p>Allerdings ist der Gültigkeitsbereich so oder so kein Argument dafür, den Speicher auch manuell zu verwalten. RAII und konkret Smart-Pointers helfen wieder mal. Wobei ich mich nicht erinnern mag, letztes Mal einen Container in einem Smart-Pointer gesteckt zu haben, wahrscheinlich wird es auch hier nicht benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2127379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2127379</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 04 Oct 2011 23:29:01 GMT</pubDate></item><item><title><![CDATA[Reply to Index mit dynamischen std::vector on Tue, 04 Oct 2011 23:45:11 GMT]]></title><description><![CDATA[<p>Hast du das wirklich schon mal gebraucht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2127380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2127380</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 04 Oct 2011 23:45:11 GMT</pubDate></item></channel></rss>