<?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[std::vector - wie wurde er erstellt?]]></title><description><![CDATA[<p>Hallo.<br />
Heute ist mir aufgefallen, dass ich - wenn ich eine eigene Vektorklasse schreiben würde, das Problem hätte, dass ich eine feste Größe bräuchte. Jedoch gibt es beim std::vector keine feste Größe, ich kann es beliebig groß machen. Wie wurde das geregelt?<br />
Die Größe muss doch zur Compilezeit feststehen:</p>
<pre><code class="language-cpp">template &lt;typename T, int Max = 32&gt;
class CVector
{
public:
    // ...

private:
    T m_Values[Max];
};
</code></pre>
<p>Danke für Erklärungen.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264779/std-vector-wie-wurde-er-erstellt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 08:45:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264779.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Apr 2010 19:45:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 19:45:12 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Heute ist mir aufgefallen, dass ich - wenn ich eine eigene Vektorklasse schreiben würde, das Problem hätte, dass ich eine feste Größe bräuchte. Jedoch gibt es beim std::vector keine feste Größe, ich kann es beliebig groß machen. Wie wurde das geregelt?<br />
Die Größe muss doch zur Compilezeit feststehen:</p>
<pre><code class="language-cpp">template &lt;typename T, int Max = 32&gt;
class CVector
{
public:
    // ...

private:
    T m_Values[Max];
};
</code></pre>
<p>Danke für Erklärungen.<br />
Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881793</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Mon, 12 Apr 2010 19:45:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 19:50:42 GMT]]></title><description><![CDATA[<p>Ungefähr so <a href="http://www.workgruppe.de/cpp/this__datei_vectorh.html" rel="nofollow">http://www.workgruppe.de/cpp/this__datei_vectorh.html</a> könnte man es dynamisch hinkriegen. Ist aber nicht exceptionsicher und hat auch kein nettes push_back.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881797</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 12 Apr 2010 19:50:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 20:05:16 GMT]]></title><description><![CDATA[<p>Der Trick dabei ist, dass man eben keine automatische Arrays (auf dem Stack) nimmt, sondern sie dynamisch anfordert (Heap) und dort kann die Grösse auch erst zur Laufzeit bekannt sein.<br />
Steht eigentlich alles in dem Link von volkard in Form von Code, aber das ist so das Prinzip.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881804</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 12 Apr 2010 20:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 20:08:18 GMT]]></title><description><![CDATA[<p>Schaue dir mal den <em>std::Allocator</em> an, dann sollte alles etwas deutlicher werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881805</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 12 Apr 2010 20:08:18 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 20:26:22 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ungefähr so <a href="http://www.workgruppe.de/cpp/this__datei_vectorh.html" rel="nofollow">http://www.workgruppe.de/cpp/this__datei_vectorh.html</a> könnte man es dynamisch hinkriegen. Ist aber nicht exceptionsicher und hat auch kein nettes push_back.</p>
</blockquote>
<p>Deutsche Parameternamen sollten generell Punkteabzug bringen <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>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881812</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Mon, 12 Apr 2010 20:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 20:28:56 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Ungefähr so <a href="http://www.workgruppe.de/cpp/this__datei_vectorh.html" rel="nofollow">http://www.workgruppe.de/cpp/this__datei_vectorh.html</a> könnte man es dynamisch hinkriegen. Ist aber nicht exceptionsicher und hat auch kein nettes push_back.</p>
</blockquote>
<p>Deutsche Parameternamen sollten generell Punkteabzug bringen <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>
<p>MfG SideWinder</p>
</blockquote>
<p>Sprache wäre ja egal, aber mischen geht gar nicht. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1881814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881814</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 12 Apr 2010 20:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Mon, 12 Apr 2010 20:29:02 GMT]]></title><description><![CDATA[<p>Merci beaucoup!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881815</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Mon, 12 Apr 2010 20:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Tue, 13 Apr 2010 00:49:45 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Schaue dir mal den <em>std::Allocator</em> an, dann sollte alles etwas deutlicher werden.</p>
</blockquote>
<p>Wenn du Scherze machst solltest du wenigstens Smileys dranschreiben, damit man auch ne Chance hat sie als solche zu erkennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881882</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 13 Apr 2010 00:49:45 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Tue, 13 Apr 2010 06:26:59 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Deutsche Parameternamen sollten generell Punkteabzug bringen <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>
</blockquote>
<p>Englisch ist mir zwar auch lieber, aber viel schlimmer find ich beides gemischt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881910</guid><dc:creator><![CDATA[FrEEzE2046]]></dc:creator><pubDate>Tue, 13 Apr 2010 06:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Tue, 13 Apr 2010 13:08:59 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a><br />
Nanu, wo ist das Smiley... <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/1882143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882143</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 13 Apr 2010 13:08:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Tue, 13 Apr 2010 17:17:53 GMT]]></title><description><![CDATA[<p>Kein Scherz, daher auch kein Smiley.</p>
<p>Glaubst du dass dem OP damit geholfen ist, wenn du std::allocator (kleines a) erwähnst? Ich glaube nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882318</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 13 Apr 2010 17:17:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Tue, 13 Apr 2010 18:24:12 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Glaubst du dass dem OP damit geholfen ist, wenn du std::allocator (kleines a) erwähnst? Ich glaube nicht.</p>
</blockquote>
<p>Doch, ich denke sehr wohl das es ihm hilft. Mir hat es enorm dabei geholfen zu raffen, wie ein <em>std::vector</em> funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882339</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 13 Apr 2010 18:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Wed, 14 Apr 2010 00:23:29 GMT]]></title><description><![CDATA[<p>Naja ich kanns mir nicht vorstellen.</p>
<p>So wie ich die ursprüngliche Frage verstehe, geht es dem OP nicht um &quot;Feinheiten&quot; wie dass erstmal &quot;roher&quot; Speicher angefordert wird, und die Elemente da Stück für Stück reinkonstruiert, oder dass man std::vector mit alternativen Allokatoren instanzieren könnte oder etwas in der Art. Bzw. wie das alles geht.</p>
<p>Es fehlt hier schon am grundlegenden <code>new T[sizeSpecifiedAtRuntime]</code> .</p>
<p>Und jemand der eine Frage auf dem Niveau stellt, hat IMO sicher nichts davon, wenn man ihm vorschlägt sich mal was zu std::allocator anzusehen.</p>
<p>Falls der OP das anders sieht, möge er mich bitte korrigieren (falls er noch mitliest, was freilich fraglich ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882440</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 14 Apr 2010 00:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Wed, 14 Apr 2010 12:47:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Falls der OP das anders sieht, möge er mich bitte korrigieren (falls er noch mitliest, was freilich fraglich ist).</p>
</blockquote>
<p>Ich lese immer mit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<blockquote>
<p>Es fehlt hier schon am grundlegenden <code>new T[sizeSpecifiedAtRuntime]</code> .</p>
</blockquote>
<p>Eigentlich nicht, jedenfalls dachte ich das immer... wie soll denn <code>new T</code> funktionieren, wenn <code>T</code> zum Beispiel <code>int*</code> ist?<br />
Dann wäre die Compileraktion doch <code>new int*[x]</code> , und das geht doch sicherlich nicht. Deshalb auch die Frage, da ich nicht damit gerechnet habe, dass es doch so &quot;simpel&quot; ist.</p>
<blockquote>
<p>wenn man ihm vorschlägt sich mal was zu <code>std::allocator</code> anzusehen.</p>
</blockquote>
<p>Das stimmt wohl. Zwar lerne ich auch gerne an praktischen Beispielen, bei sowas sollte man aber (auch meiner Erfahrung nach) lieber nachfragen, denn es ist besser, es sich gleich richtig einzuprägen, anstatt den Code in einer (für mich sehr unübersichtlichen) Bibliothek falsch zu interpretieren.</p>
<p>Edit: Ach ja, @ hustbaer: Wenn du Lust hast, würde ich mich freuen wenn du mir noch einmal helfen könntest. Du hast mir damals auf eine Frage zum Pluginsystem geantwortet und scheintest dich ganz gut damit auszukennen. Siehe <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-264751.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-264751.html</a> (bitte nicht so auffassen als ob ich jetzt eine Antwort erwarte - ich weiß, dass das hier alles freiwillig ist ;))</p>
<p>Gruß und Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882721</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 14 Apr 2010 12:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Wed, 14 Apr 2010 13:23:28 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<blockquote>
<p>Es fehlt hier schon am grundlegenden <code>new T[sizeSpecifiedAtRuntime]</code> .</p>
</blockquote>
<p>Eigentlich nicht, jedenfalls dachte ich das immer... wie soll denn <code>new T</code> funktionieren, wenn <code>T</code> zum Beispiel <code>int*</code> ist?</p>
</blockquote>
<p>Genauso wie in jedem anderen Fall. Ob du nun ein Array von Integern oder ein Array von Integerzeigern hast, ist ziemlich egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882748</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 14 Apr 2010 13:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Wed, 14 Apr 2010 19:01:20 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>theliquidwave schrieb:</p>
<blockquote>
<blockquote>
<p>Es fehlt hier schon am grundlegenden <code>new T[sizeSpecifiedAtRuntime]</code> .</p>
</blockquote>
<p>Eigentlich nicht, jedenfalls dachte ich das immer... wie soll denn <code>new T</code> funktionieren, wenn <code>T</code> zum Beispiel <code>int*</code> ist?</p>
</blockquote>
<p>Genauso wie in jedem anderen Fall. Ob du nun ein Array von Integern oder ein Array von Integerzeigern hast, ist ziemlich egal.</p>
</blockquote>
<p>Genau. Viele machen den Fehler, dass sie Zeiger irgendwie als keine richtigen Typen anerkennen und immer Spezialfälle erwarten.</p>
<p>Am besten macht man einfach mal das hier:</p>
<pre><code class="language-cpp">typedef int* int_pointer;

int_pointer a;
</code></pre>
<p>Man stellt sich da einfach mal dumm und stellt sich am besten gar nichts mit Sternchen vor, sondern, dass das einfach eine Klasse ist, wo man halt ein paar Operationen drauf ausführen kann, wie -&gt; oder *.</p>
<p>Lediglich auf die Invarianz muss geachtet werden (von wegen 0 Pointer und so) und darf die Operationen nicht immer drauf anwenden. Ansonsten verhält sich int_pointer genau gleich, wie andere Typen auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882999</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 14 Apr 2010 19:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Sun, 18 Apr 2010 13:29:43 GMT]]></title><description><![CDATA[<p>Hi.<br />
Ok <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>Mal ne Frage... In dem Beispiel: <a href="http://www.workgruppe.de/cpp/this__datei_vectorh.html" rel="nofollow">http://www.workgruppe.de/cpp/this__datei_vectorh.html</a><br />
Ganz unten steht <code>delete m_data;</code> - das ist doch ein Memory Leak oder nicht? Weil der Kram mit <code>new[]</code> angelegt wird. Oder habe ich was falsch verstanden?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884620</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 18 Apr 2010 13:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector - wie wurde er erstellt? on Sun, 18 Apr 2010 14:18:36 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Ganz unten steht <code>delete m_data;</code> - das ist doch ein Memory Leak oder nicht? Weil der Kram mit <code>new[]</code> angelegt wird.</p>
</blockquote>
<p>Schlimmer noch, das ist undefiniertes Verhalten. Man muss immer die entsprechenden Speicheranforderungs- und Freigabeoperatoren verwenden. Also <code>new</code> mit <code>delete</code> und <code>new[]</code> mit <code>delete[]</code> zusammen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884633</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 18 Apr 2010 14:18:36 GMT</pubDate></item></channel></rss>