<?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[Vektor für Objekte einer Klasse -Gelöst-]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

class foo
{
 public:
 int Anzahl;
};

int main()
{
 vector&lt;foo&gt;test;
 for(size_t i=0;i&lt;10;++i)
{
 test[i].Anzahl=50;
}

return 0;
}
</code></pre>
<p>Ich möchte gerne einen Vektor für Objekte einer Klasse anlegen.<br />
Das Codebeispiel funktioniert leider nicht, nehme ich statt des Vektors ein Array, ist alles in Ordnung. Oder wenn ich dem Vektor eine feste Anzahl von Elementen zuweise (z.B. 10), geht es auch. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302883/vektor-für-objekte-einer-klasse-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 02:08:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302883.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Apr 2012 21:55:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Mon, 30 Apr 2012 19:30:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

class foo
{
 public:
 int Anzahl;
};

int main()
{
 vector&lt;foo&gt;test;
 for(size_t i=0;i&lt;10;++i)
{
 test[i].Anzahl=50;
}

return 0;
}
</code></pre>
<p>Ich möchte gerne einen Vektor für Objekte einer Klasse anlegen.<br />
Das Codebeispiel funktioniert leider nicht, nehme ich statt des Vektors ein Array, ist alles in Ordnung. Oder wenn ich dem Vektor eine feste Anzahl von Elementen zuweise (z.B. 10), geht es auch. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206792</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Mon, 30 Apr 2012 19:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:09:08 GMT]]></title><description><![CDATA[<p>Du musst in den Vector auch was reinpacken, bevor du darauf zugreifen kannst. Elemente automatisch erzeugen tut nur die (multi)map (das ist aber sicherlich nicht das was du möchtest). Um Elemente in den vector zu packen gibt es sehr <a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">viele Methoden</a>. Am meisten benutzt werden vermutlich (ganz grob danach sortiert, wie oft sie mir begegnen):<br />
- push_back<br />
- Erzeugung einer bestimmten Zahl von Elementen direkt im Konstruktor<br />
- Vergrößerung mit resize<br />
- Zuweisung einer Reihe von Elementen im Konstruktor<br />
- Zuweisung einer Liste von Elementen (ab C++11)<br />
- Einfügen mit insert<br />
- Inhaltsänderung mit assign</p>
<p>Und das waren nicht einmal alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206797</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:16:42 GMT]]></title><description><![CDATA[<p>Dachte, daß durch</p>
<pre><code class="language-cpp">test[i].Anzahl=50;
</code></pre>
<p>jedem Objekt des Vektors der Wert 50 zugewiesen wird.</p>
<p>Man könnte natürlich auch erstmal ein Objekt erzeugen, den Wert zuweisen und es dann mit push_back in den Vektor speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206798</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:20:13 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>jedem Objekt des Vektors der Wert 50 zugewiesen wird.</p>
</blockquote>
<p>Und wie viele Objekte sind in dem vector?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206800</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:45:09 GMT]]></title><description><![CDATA[<p>Dachte, 10, aber wenn ich das richtig verstehe, wohl leider keins.<br />
Gibt es denn eine Möglichkeit, Vektoren zu erzeugen, die eine noch nicht bekannte<br />
Anzahl von Objekten speichern können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206802</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:37:17 GMT]]></title><description><![CDATA[<p>In deinem Code sind KEINE Objekte in dem Vector, weil du keine eingefügt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206803</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:37:17 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:43:14 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>10</p>
</blockquote>
<p>Und wo in dem Code sagst du, dass 10 Elemente in dem vector sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206804</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:43:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 22:45:09 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>10</p>
</blockquote>
<p>Und wie sind die darein gekommen? Gucken wir doch mal die beiden Operationen auf den vector an, die in deinem Code sind:</p>
<pre><code class="language-cpp">vector&lt;foo&gt;test;
</code></pre>
<p><a href="http://www.cplusplus.com/reference/stl/vector/vector/" rel="nofollow">Erstellt einen leeren vector.</a><br />
Guck dir den Link auch an! Du hast die erste Variante des Konstruktors gewählt, also den mit dem Defaultargument.</p>
<pre><code class="language-cpp">test[i].Anzahl=50;
</code></pre>
<p>Das fügt auch nichts in den Vector ein, <a href="http://www.cplusplus.com/reference/stl/vector/operator%5B%5D/" rel="nofollow">es greift auf bestehende Elemente zu</a>. Da die Elemente auf die du zugreifst nicht da sind, gibt es Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206805</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 29 Apr 2012 22:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Sun, 29 Apr 2012 23:42:08 GMT]]></title><description><![CDATA[<p>Stimmt. Eigentlich auch sehr logisch.<br />
Hatte das irgendwie (fragt nicht wie...) mit push_back verwechselt, sry.</p>
<pre><code class="language-cpp">for(size_t i=0;i&lt;10;++i)
 {
     foo s;
     s.Anzahl=50;
     test.push_back(s);
 }
</code></pre>
<p>So müßte man es dann schreiben können, wenn das Objekt nur innerhalb der Schleife<br />
existieren soll.</p>
<p>Danke für die Hilfe nochmal <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/2206808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206808</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Sun, 29 Apr 2012 23:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Mon, 30 Apr 2012 01:09:28 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>wenn das Objekt nur innerhalb der Schleife<br />
existieren soll.</p>
</blockquote>
<p>ist zwar richtig, spielt aber keine rolle, wie lang das existiert - kopiert wird es so und so. hast dus in deinem code auch so oder umständlicher geschrieben? ich tippe mal fast auf 2.^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206809</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 30 Apr 2012 01:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Mon, 30 Apr 2012 08:13:02 GMT]]></title><description><![CDATA[<p>In meinem Code hatte ich das zuerst genauso geschrieben.</p>
<p>Ich habe allerdings das Problem, daß das Objekt auch abhängig von anderen Bedingungen (z.B. einem Zähler) zerstört werden soll.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using namespace std;

class foo
{
 public:
 int Anzahl;
};

int main()
{
 vector&lt;foo&gt;test;
 for(size_t i=0,z=0;i&lt;10;++i,++z)
 {
      foo *s=new foo;
      if(z==5)
      {
          delete s;
          continue;
      }
      else
      {
        s-&gt;Anzahl=50;
        test.push_back(*s);
        delete s;
      }
 }
 return 0;
 }
</code></pre>
<p>Weiß nicht genau, ob es sinnvoll ist, das Objekt auf dem Heap anzulegen, eine<br />
andere Idee ist mir bislang nicht eingefallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206831</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Mon, 30 Apr 2012 08:13:02 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Mon, 30 Apr 2012 08:19:55 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>...<br />
Weiß nicht genau, ob es sinnvoll ist, das Objekt auf dem Heap anzulegen, eine<br />
andere Idee ist mir bislang nicht eingefallen.</p>
</blockquote>
<p>Auf dem Stack ist es wesentlich besser aufgehoben, wenn du auch noch einen sinnvollen Konstruktor spendierst, kannst du den Code sogar noch weiter verkürzen.</p>
<p>// Erste Variante mit Kommentaren</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

using namespace std;

class foo
{
  public:
    int Anzahl;
};

int main()
{
  vector&lt;foo&gt;test;
  for(size_t i=0,z=0;i&lt;10;++i,++z)
  {
    // foo *s=new foo; =&gt; Dein Vektor enthält Objekte, keine Zeiger, warum also new?
    foo s;
    if(z==5)
    {
      // delete s; =&gt; Ohne new auch nicht nötig...
      continue;
    }
    else
    {
      // s-&gt;Anzahl=50;
      s.Anzahl=50;
      test.push_back(s);
      // delete s;
    }
  }
  return 0; // Kannst, musst du aber bei int main nicht schreiben (wird automatisch gemacht)...
}
</code></pre>
<p>// Kürzere Variante dank Konstruktor und umgedrehter Logik...</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

using namespace std;

class foo
{
  public:
    foo(int anzahl = 0)
    : Anzahl(anzahl)
    {}

    int Anzahl;
};

int main()
{
  vector&lt;foo&gt;test;
  for(size_t i=0,z=0;i&lt;10;++i,++z)
    if(z!=5)
      test.push_back(foo(50));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2206842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206842</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 30 Apr 2012 08:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor für Objekte einer Klasse -Gelöst- on Mon, 30 Apr 2012 19:27:31 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>// foo *s=new foo; =&gt; Dein Vektor enthält Objekte, keine Zeiger, warum also<br />
new?</p>
</blockquote>
<p>Stimmt natürlich. Ich war fälschlicherweise davon ausgegangen, daß nach dem<br />
continue das Objekt bestehen bleibt, was natürlich Quatsch ist.</p>
<p>asc schrieb:</p>
<blockquote>
<p>Auf dem Stack ist es wesentlich besser aufgehoben, wenn du auch noch einen sinnvollen Konstruktor spendierst, kannst du den Code sogar noch weiter verkürzen.<br />
// Kürzere Variante dank Konstruktor und umgedrehter Logik...</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

using namespace std;

class foo
{
  public:
    foo(int anzahl = 0)
    : Anzahl(anzahl)
    {}

    int Anzahl;
};

int main()
{
  vector&lt;foo&gt;test;
  for(size_t i=0,z=0;i&lt;10;++i,++z)
    if(z!=5)
      test.push_back(foo(50));
}
</code></pre>
</blockquote>
<p>Jupp, sieht gut aus. Danke für die Hilfe <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/2207045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2207045</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Mon, 30 Apr 2012 19:27:31 GMT</pubDate></item></channel></rss>