<?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[vector richtig initalisieren]]></title><description><![CDATA[<p>Hi.</p>
<p>Möchte gerne ein Struct als Klasse umarbeiten und Methoden hinzufügen, habe jetzt aber schon mein erstes Problem. Mein Struct wird 1000 mal in einen vector abgelegt.</p>
<pre><code class="language-cpp">struct mystruct
{
string text;
}mystr;
</code></pre>
<p>In der Klasse kann ich aber nicht mehr sagen <strong>vector&lt;mydtruct&gt; daten[1000];</strong>,<br />
sondern darf nur noch <strong>vector&lt;mystruct&gt; daten;</strong></p>
<p>Also habe ich im Konstruktor eine Schleife geschaffen die 1000 mal durchläuft und mittels <strong>daten.push_back(mystr);</strong> die 1000 Arrays erstellen soll.</p>
<p>Wenn ich jetzt aber auf <strong>daten[0].text = &quot;hello world!&quot;;</strong> eingebe und mittels printf mir ausgeben lassen möchte, sagt er lediglich <strong>&lt;null&gt;</strong> als Ausgabe. Was mach ich denn falsch? Compiler meldet keine Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199138/vector-richtig-initalisieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 20:01:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199138.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Nov 2007 11:00:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 11:00:34 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Möchte gerne ein Struct als Klasse umarbeiten und Methoden hinzufügen, habe jetzt aber schon mein erstes Problem. Mein Struct wird 1000 mal in einen vector abgelegt.</p>
<pre><code class="language-cpp">struct mystruct
{
string text;
}mystr;
</code></pre>
<p>In der Klasse kann ich aber nicht mehr sagen <strong>vector&lt;mydtruct&gt; daten[1000];</strong>,<br />
sondern darf nur noch <strong>vector&lt;mystruct&gt; daten;</strong></p>
<p>Also habe ich im Konstruktor eine Schleife geschaffen die 1000 mal durchläuft und mittels <strong>daten.push_back(mystr);</strong> die 1000 Arrays erstellen soll.</p>
<p>Wenn ich jetzt aber auf <strong>daten[0].text = &quot;hello world!&quot;;</strong> eingebe und mittels printf mir ausgeben lassen möchte, sagt er lediglich <strong>&lt;null&gt;</strong> als Ausgabe. Was mach ich denn falsch? Compiler meldet keine Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412123</guid><dc:creator><![CDATA[Nanu]]></dc:creator><pubDate>Thu, 29 Nov 2007 11:00:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 11:08:01 GMT]]></title><description><![CDATA[<p>wie sieht die ausgabe aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412128</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 29 Nov 2007 11:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 11:09:44 GMT]]></title><description><![CDATA[<p>Die Klasse vector&lt;&gt; hat auch einige Konstruktoren, die du verwenden darfst - <code>vector&lt;mystruct&gt;daten(1000);</code> sollte da eigentlich helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412129</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 29 Nov 2007 11:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:09:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/17188">@simon.gysi</a></p>
<pre><code class="language-cpp">daten[0].text = &quot;hello world!&quot;;
printf(&quot;text: %s\n&quot;,daten[0].text);

AUSGABE &quot;text: &lt;null&gt;&quot;
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a></p>
<p>In einer Klasse kann ich aber nicht im public Bereich den vector bereits initialisieren, genausowenig wie dort <strong>int wert=1;</strong> funktioniert.</p>
<p>P.S. oben habe ich mich vertippt, meinte natürlich statt der [1000] ein (1000)</p>
<p>Ich bekomme es nicht hin, den vector in der Klasse bekannt zu machen und dann in einer Klasseninternen Funtkion wie dem Konstruktor &quot;aufzufüllen&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412228</guid><dc:creator><![CDATA[Nanu]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:16:20 GMT]]></title><description><![CDATA[<p>C-Strings kann man nicht direkt mit printf ausgeben.</p>
<p>Wenn Du ohnehin C++ programmierst dann nimm einfach &quot;cout &lt;&lt; foo[0].text;&quot;.<br />
Oder (hässlich) Du übergibst foo[0].text.c_str() an printf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412233</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:18:51 GMT]]></title><description><![CDATA[<p>Oh, btw, ein std::vector wächst bei push_back()s automatisch mit, Du brauchst die Kapazität also nicht unbedingt anzugeben.</p>
<p>Wenn Du das machen möchtest, dafür aber nicht den Konstruktor verwenden willst, dann nimm einfach std::vector&lt;T&gt;::reserve. (siehe <a href="http://www.sgi.com/tech/stl/Vector.html" rel="nofollow">http://www.sgi.com/tech/stl/Vector.html</a>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412237</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:20:56 GMT]]></title><description><![CDATA[<p>Nanu schrieb:</p>
<blockquote>
<p>In einer Klasse kann ich aber nicht im public Bereich den vector bereits initialisieren, genausowenig wie dort <strong>int wert=1;</strong> funktioniert.</p>
</blockquote>
<p>Das sollst du ja auch in der Initialisierungsliste des Konstruktors machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412241</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:23:18 GMT]]></title><description><![CDATA[<p>Nanu schrieb:</p>
<blockquote>
<p>In einer Klasse kann ich aber nicht im public Bereich den vector bereits initialisieren, genausowenig wie dort <strong>int wert=1;</strong> funktioniert.</p>
</blockquote>
<p>Achso, der vector ist in einer anderen Klasse - dann mußt du ihn in deren Ctor initialisieren:</p>
<pre><code class="language-cpp">class master
{
  vector&lt;mystruct&gt;daten;
public:
  master() : daten(1000) {}
};
</code></pre>
<blockquote>
<p>Ich bekomme es nicht hin, den vector in der Klasse bekannt zu machen und dann in einer Klasseninternen Funtkion wie dem Konstruktor &quot;aufzufüllen&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Entweder die Lösung von oben - oder du vergrößerst den vector mit resize() auf die richtige Größe, bevor du ihn füllst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412242</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:29:53 GMT]]></title><description><![CDATA[<p>Oh, ich sehe erst jetzt, dass ich das Problem komplett missverstanden habe, sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412249</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:32:07 GMT]]></title><description><![CDATA[<p>Danke für eure tolle Hilfe!</p>
<p>In CBuilder ist das c_str() für AnsiString schon im Blut und normal bin ich auch gewohnt das sprintf bei strings eigentlich mir einen Fehler meldet. Jetzt klappts ja gott sei Dank.</p>
<p>Kleine Zusatzfragen</p>
<pre><code class="language-cpp">class master
{
  vector&lt;mystruct&gt;daten;
public:
  master() : daten(1000) {}
};
</code></pre>
<p>Das habe ich schomal gesehen, wirkt aber &quot;seltsam&quot; und was macht man wenn man mehrere vectoren hat? Dann muss man wohl eh den Weg wie oben gehen, oder?</p>
<p>reserve() ist toll, setzt das den Inhalt eigentlich auch auf 0 oder muss man mit einer Schleife selber dann nochmal den vector durch und alle Variablen auf 0 setzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412252</guid><dc:creator><![CDATA[Nanu]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 13:47:46 GMT]]></title><description><![CDATA[<p>Nanu schrieb:</p>
<blockquote>
<p>Das habe ich schomal gesehen, wirkt aber &quot;seltsam&quot; und was macht man wenn man mehrere vectoren hat? Dann muss man wohl eh den Weg wie oben gehen, oder?</p>
</blockquote>
<p>Wenn du mehrere vectoren hast, geht das genauso - du mußt sie in der Initialisierungsliste (so nennt sich das &quot;:daten(1000)&quot;) nur durch Komma getrennt angeben.</p>
<blockquote>
<p>reserve() ist toll, setzt das den Inhalt eigentlich auch auf 0 oder muss man mit einer Schleife selber dann nochmal den vector durch und alle Variablen auf 0 setzen?</p>
</blockquote>
<p>reserve() besorgt dem vector nur einen ausreichend großen Datenblock, füllt ihn aber nicht - danach auf die Elemente zugreifen zu wollen ist allerdings undefiniert.</p>
<p>resize() oder der vector-Ctor füllen den vector mit der angegebenen Anzahl an Elementen - wenn nicht anders angegeben, werden die Elemente alle default-konstruiert. (du kannst noch einen zusätzlichen Parameter angeben, dann füllt sich der vector mit entsprechend vielen Kopien dieses Objekts)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412265</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 29 Nov 2007 13:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to vector richtig initalisieren on Thu, 29 Nov 2007 14:29:27 GMT]]></title><description><![CDATA[<p>Schön zu wissen, danke für die Erklärung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412311</guid><dc:creator><![CDATA[Nau]]></dc:creator><pubDate>Thu, 29 Nov 2007 14:29:27 GMT</pubDate></item></channel></rss>