<?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[[Anfänger] vector problem]]></title><description><![CDATA[<p>Hallo bin neu hier und neu bei den c++ programmierern und habe direkt mal ne frage zu vectoren:</p>
<p>als Übung versuche ich ein kleines Black Jack spiel zu programmieren, dazu habe ich einen vector angelegt der als elemente die karten enthält --&gt;52 elemente</p>
<p>wenn der spieler nun eine zufällige karte erhält (welche in einen eigenen vector gespeichert wird), soll diese aus dem vector gelöscht werden.</p>
<p>das prob ist folgendes, wenn ich einer variablen den inhalt des vectors mit zufälligem indexwert übergebe, kenne ich den wert, nicht aber den indexwert, wie finde ich diesen heraus? ich könnte ja rückwärts anhand des kartenwertes den indexwert rausfinden, aber dann hätte ich für die zwei z.b 4 verschiedene möglichkeiten... hier der wichtige teil des codes</p>
<pre><code class="language-cpp">vector&lt;int&gt; eigeneKarten;
for(int i=0; i&lt;52; i++) {
int ZufallsZahl = rand()%Karte.size();
cout &lt;&lt; &quot;Zufallszahl = &quot; &lt;&lt; ZufallsZahl &lt;&lt;endl;
eigeneKarten.push_back(Karte[ZufallsZahl]);
cout &lt;&lt; eigeneKarten.size() &lt;&lt; &quot;. Karte &quot; &lt;&lt; eigeneKarten.back() &lt;&lt; endl;
}
</code></pre>
<p>sry sollte der code noch was chaotisch sein ich bessere mich 8[</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211482/anfänger-vector-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 06:26:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211482.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Apr 2008 17:08:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 17:08:39 GMT]]></title><description><![CDATA[<p>Hallo bin neu hier und neu bei den c++ programmierern und habe direkt mal ne frage zu vectoren:</p>
<p>als Übung versuche ich ein kleines Black Jack spiel zu programmieren, dazu habe ich einen vector angelegt der als elemente die karten enthält --&gt;52 elemente</p>
<p>wenn der spieler nun eine zufällige karte erhält (welche in einen eigenen vector gespeichert wird), soll diese aus dem vector gelöscht werden.</p>
<p>das prob ist folgendes, wenn ich einer variablen den inhalt des vectors mit zufälligem indexwert übergebe, kenne ich den wert, nicht aber den indexwert, wie finde ich diesen heraus? ich könnte ja rückwärts anhand des kartenwertes den indexwert rausfinden, aber dann hätte ich für die zwei z.b 4 verschiedene möglichkeiten... hier der wichtige teil des codes</p>
<pre><code class="language-cpp">vector&lt;int&gt; eigeneKarten;
for(int i=0; i&lt;52; i++) {
int ZufallsZahl = rand()%Karte.size();
cout &lt;&lt; &quot;Zufallszahl = &quot; &lt;&lt; ZufallsZahl &lt;&lt;endl;
eigeneKarten.push_back(Karte[ZufallsZahl]);
cout &lt;&lt; eigeneKarten.size() &lt;&lt; &quot;. Karte &quot; &lt;&lt; eigeneKarten.back() &lt;&lt; endl;
}
</code></pre>
<p>sry sollte der code noch was chaotisch sein ich bessere mich 8[</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497050</guid><dc:creator><![CDATA[Zzork]]></dc:creator><pubDate>Wed, 23 Apr 2008 17:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 17:14:33 GMT]]></title><description><![CDATA[<p>Der Indexwert ist ZufallsZahl...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497052</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Wed, 23 Apr 2008 17:14:33 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 17:35:45 GMT]]></title><description><![CDATA[<p>Zzork schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vector&lt;int&gt; eigeneKarten;
for(int i=0; i&lt;52; i++) {
int ZufallsZahl = rand()%Karte.size();
cout &lt;&lt; &quot;Zufallszahl = &quot; &lt;&lt; ZufallsZahl &lt;&lt;endl;
eigeneKarten.push_back(Karte[ZufallsZahl]);
cout &lt;&lt; eigeneKarten.size() &lt;&lt; &quot;. Karte &quot; &lt;&lt; eigeneKarten.back() &lt;&lt; endl;
}
</code></pre>
</blockquote>
<p>Auf diese Weise entfernst du jedoch die gezogene Karte nicht aus vector, sondern hängst sie noch ein weiteres Mal an den Vektor an (Funktion <em>push_back()</em>). Um sie zu löschen, benutze <em>erase()</em>.</p>
<p>Zudem musst du den Vektor zuerst initialisieren. Bei dir hat er die ganze Zeit die Grösse 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497062</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Apr 2008 17:35:45 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 17:39:59 GMT]]></title><description><![CDATA[<p>ja das ist es ja, eigeneKarten sind die Karten die ich bekomme, erase() habe ich hier noch gar nicht eingebaut, hab auch ehrlich gesagt ka wie ich das anstellen soll, hab hier ein buch liegen in dem steht dass man es so anstellen kann</p>
<pre><code class="language-cpp">for(int i=0; i&lt;52; i++) {
int ZufallsZahl = rand()%Karte.size();
cout &lt;&lt; &quot;Zufallszahl = &quot; &lt;&lt; ZufallsZahl &lt;&lt;endl;
eigeneKarten.push_back(Karte[ZufallsZahl]);
Karte.erase( Karte.begin()+ZufallsZahl);
cout &lt;&lt; eigeneKarten.size() &lt;&lt; &quot;. Karte &quot; &lt;&lt; eigeneKarten.back() &lt;&lt; endl;
}
</code></pre>
<p>gibt aber nur nen fehler wenn ich das ganze 52 mal (für jee karte) durchlaufen lasse. vielleicht sollte ich das element einfach mit &quot;0&quot; überschrieben und wenn das beim nächsten durchlauf die 0 kommt startet er halt neu bis keine 0 mehr kommt.......unsauber? 8[</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497063</guid><dc:creator><![CDATA[Zzork]]></dc:creator><pubDate>Wed, 23 Apr 2008 17:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 17:55:51 GMT]]></title><description><![CDATA[<p>Kannst du das ganze etwas verständlicher formulieren? Was willst du denn erreichen? Zuerst eine zufällige Permutation von 52 Integer-Werten (Karten) in einem std::vector?</p>
<p>Willst du die Karten, nachdem alle im vector sind, anschliessend einzeln wieder entfernen? Wenn ja, musst du eine separate For-Schleife erstellen, da in deinem Code jedes Element, das erstellt wird, gleich wieder gelöscht wird:</p>
<p>Zzork schrieb:</p>
<blockquote>
<pre><code class="language-cpp">eigeneKarten.push_back(Karte[ZufallsZahl]);
Karte.erase( Karte.begin()+ZufallsZahl);
</code></pre>
</blockquote>
<p>Deine <em>erase()</em>-Syntax ist korrekt - Karte.begin ist ein Iterator (entspricht etwa einem Zeiger) auf das erste Element des Vectors, mit <em>+ZufallsZahl</em> hast du Zugriff auf das Element mit dem Index <em>ZufallsZahl</em> (Zeigerarithmetik).</p>
<pre><code class="language-cpp">Karte.erase(Karte.begin()+Index);
</code></pre>
<p>Ich empfehle dir, den Code einzurücken, das steigert die Übersichtlichkeit enorm.<br />
Und beschreib bitte ausführlich, was du genau tun willst, damit wir dir helfen können <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/1497079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497079</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Apr 2008 17:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 18:13:20 GMT]]></title><description><![CDATA[<p>ok nochmal von vorne ^^<br />
es gibt 2 vectoren</p>
<p>1. vector&lt;int&gt; Karte<br />
2. vector&lt;int&gt; eigeneKarten<br />
----------------------------------<br />
1. hier werden von anfang an alle 52 Karten eines decks gespeichert, den teil des codes habe ich rausgelassen</p>
<p>2. hier kommen die karten von &quot;Karte&quot; rein die man bekommt, logischerweise werden diese dann aus &quot;Karte&quot; gelöscht</p>
<p>also sollte es ein element-transport von Karte in eigeneKarten sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497092</guid><dc:creator><![CDATA[Zzork]]></dc:creator><pubDate>Wed, 23 Apr 2008 18:13:20 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 18:26:15 GMT]]></title><description><![CDATA[<p>Und was ist da jetzt das Problem?</p>
<p>Schreib dir ne Funktion die in deinen Vektor Karten, die Karte sucht, dann speicherst du sie in einer Temporären Variable und löscht dann das alte Element. Dann brauchst dus nur noch in dein anderen Vektor schieben.</p>
<p>Tipp: Benutz mal lieber list&lt;&gt; die ist noch ein wenig fexibler.</p>
<p>Gruß Tobi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497100</guid><dc:creator><![CDATA[T0bi]]></dc:creator><pubDate>Wed, 23 Apr 2008 18:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] vector problem on Wed, 23 Apr 2008 19:27:59 GMT]]></title><description><![CDATA[<p>Sieht so aus, als ob du die Karten mischen wolltest. Dafür gibts in der Standardbibliothek schon was, nämlich im Header &lt;algorithm&gt; die Funktion std::random_shuffle(conainer.begin(), container.end()). Wenn du gemischt hast brauchst du nur noch Karten.back() und Karten.pop_back() zu benutzen. Die Algorithmenbibliothek kann öfter nützlich sein als man denkt. Wieso dein eigener Code nicht so funktioniert wie erwartet ist mir unklar.<br />
std::list ist in einer Hinsicht weniger flexibler als std::vector: Keine Random-Access-Iteratoren. Ich denke für ein Kartenspiel eignen sich Vektoren besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497134</guid><dc:creator><![CDATA[geloescht]]></dc:creator><pubDate>Wed, 23 Apr 2008 19:27:59 GMT</pubDate></item></channel></rss>