<?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]]></title><description><![CDATA[<p>Hallo, habe vorhin folgendes Programm geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

int main()
{
	using std::vector;
	using std::cout;
	using std::cin;
	using std::endl;

	int tmp;
	vector&lt;int&gt; vec_number(4, 0);
	vector&lt;int&gt;::iterator iter = vec_number.begin();

	cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot; &lt;&lt; endl;
	while(cin &gt;&gt; tmp)
	{
		if(iter != vec_number.end())
		{
			*iter = tmp;
			iter++;
		}
		else
			vec_number.push_back(tmp);
	}
	iter = vec_number.begin();
	while(iter != vec_number.end())
	{
		cout &lt;&lt; *iter &lt;&lt; endl;
		iter++;
	}

	return 0;

}
</code></pre>
<p>Danach ist mir aufgefallen, ha das geht doch einfacher:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

int main()
{
	using std::vector;
	using std::cout;
	using std::cin;
	using std::endl;

	int tmp;
	vector&lt;int&gt; vec_number;
	vector&lt;int&gt;::iterator iter;

	cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot; &lt;&lt; endl;
	while(cin &gt;&gt; tmp)
	{
		vec_number.push_back(tmp);
	}
	iter = vec_number.begin();
	while(iter != vec_number.end())
	{
		cout &lt;&lt; *iter &lt;&lt; endl;
		iter++;
	}

	return 0;

}
</code></pre>
<p>Nun hab ich eine Frage und ein Problem:<br />
Warum hat das erste Programm nach 7-8 Eingaben abgebrochen?<br />
Und bei meinem zweiten Code, gibt ihr mir nicht die Zahlen aus, warum?Habe schon rumprobiert, komme aber leider nicht auf den Fehler.<br />
EDIT: <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="😃"
    /> Habe ausversehen nur debugged un nicht ausgeführt^^<br />
Aber das erste würde mich noch interessieren <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>-GhostfaceChilla-</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292606/vector</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 20:03:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292606.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Sep 2011 19:56:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector on Tue, 13 Sep 2011 20:02:19 GMT]]></title><description><![CDATA[<p>Hallo, habe vorhin folgendes Programm geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

int main()
{
	using std::vector;
	using std::cout;
	using std::cin;
	using std::endl;

	int tmp;
	vector&lt;int&gt; vec_number(4, 0);
	vector&lt;int&gt;::iterator iter = vec_number.begin();

	cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot; &lt;&lt; endl;
	while(cin &gt;&gt; tmp)
	{
		if(iter != vec_number.end())
		{
			*iter = tmp;
			iter++;
		}
		else
			vec_number.push_back(tmp);
	}
	iter = vec_number.begin();
	while(iter != vec_number.end())
	{
		cout &lt;&lt; *iter &lt;&lt; endl;
		iter++;
	}

	return 0;

}
</code></pre>
<p>Danach ist mir aufgefallen, ha das geht doch einfacher:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

int main()
{
	using std::vector;
	using std::cout;
	using std::cin;
	using std::endl;

	int tmp;
	vector&lt;int&gt; vec_number;
	vector&lt;int&gt;::iterator iter;

	cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot; &lt;&lt; endl;
	while(cin &gt;&gt; tmp)
	{
		vec_number.push_back(tmp);
	}
	iter = vec_number.begin();
	while(iter != vec_number.end())
	{
		cout &lt;&lt; *iter &lt;&lt; endl;
		iter++;
	}

	return 0;

}
</code></pre>
<p>Nun hab ich eine Frage und ein Problem:<br />
Warum hat das erste Programm nach 7-8 Eingaben abgebrochen?<br />
Und bei meinem zweiten Code, gibt ihr mir nicht die Zahlen aus, warum?Habe schon rumprobiert, komme aber leider nicht auf den Fehler.<br />
EDIT: <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="😃"
    /> Habe ausversehen nur debugged un nicht ausgeführt^^<br />
Aber das erste würde mich noch interessieren <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>-GhostfaceChilla-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118925</guid><dc:creator><![CDATA[GhostfaceChilla]]></dc:creator><pubDate>Tue, 13 Sep 2011 20:02:19 GMT</pubDate></item><item><title><![CDATA[Reply to Vector on Tue, 13 Sep 2011 20:09:21 GMT]]></title><description><![CDATA[<p>GhostfaceChilla schrieb:</p>
<blockquote>
<p>Warum hat das erste Programm nach 7-8 Eingaben abgebrochen?</p>
</blockquote>
<p>Ja, das wundert mich auch. Nach meinem Kopfdebugging hätte es schon bei der sechsten Eingabe abgestürzen sollen. Standardkonform ist es nur bis Eingabe Nr. 5.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118929</guid><dc:creator><![CDATA[headbuggy]]></dc:creator><pubDate>Tue, 13 Sep 2011 20:09:21 GMT</pubDate></item><item><title><![CDATA[Reply to Vector on Tue, 13 Sep 2011 20:28:36 GMT]]></title><description><![CDATA[<p>Und warum stürzt es ab?<br />
Es wird doch überprüft, wenn es nicht das Ende von numbers is, dann macht es die Ausführung, wenn es das Ende wäre, wird doch die Eingabe hinten ran gesetzt oder??</p>
<p>-GhostfaceChilla-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118941</guid><dc:creator><![CDATA[GhostfaceChilla]]></dc:creator><pubDate>Tue, 13 Sep 2011 20:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vector on Tue, 13 Sep 2011 20:35:50 GMT]]></title><description><![CDATA[<p>Afaik werden Iteratoren wertlos, sobald <code>resize</code> aufgerufen wird.<br />
Nach dem vierten hinzufügen ist <code>iter == vec_number.end()</code> , weil die Größe 4 ist. Beim fünften mal werden <code>push_back</code> und <code>resize</code> aufgerufen, um mehr Platz zu schaffen. Somit wird iter ungültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118944</guid><dc:creator><![CDATA[Wurst]]></dc:creator><pubDate>Tue, 13 Sep 2011 20:35:50 GMT</pubDate></item><item><title><![CDATA[Reply to Vector on Wed, 14 Sep 2011 09:34:23 GMT]]></title><description><![CDATA[<p>Wurst schrieb:</p>
<blockquote>
<p>Afaik werden Iteratoren wertlos, sobald <code>resize</code> aufgerufen wird.<br />
Nach dem vierten hinzufügen ist <code>iter == vec_number.end()</code> , weil die Größe 4 ist. Beim fünften mal werden <code>push_back</code> und <code>resize</code> aufgerufen, um mehr Platz zu schaffen. Somit wird iter ungültig.</p>
</blockquote>
<p>Korrekt. Genauer gesagt ist der Zugriff auf iter nach dem ersten push_back böse. Der Abbruch nach 7-8 ist völlig normal, ein Abbruch nach 6 Eingaben wie in Headbuggys Kopf auch, ein Abbruch nach 273 Eingaben wäre auch denkbar gewesen.</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>Welcome to the dark shady realms of undefined behavior.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2119146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119146</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 14 Sep 2011 09:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Vector on Wed, 14 Sep 2011 11:47:34 GMT]]></title><description><![CDATA[<p>Heißt das also folgender Code könnte auch nicht richtig funktionieren?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

int main()
{
    using std::vector;
    using std::cout;
    using std::cin;
    using std::endl;

    int tmp;
    vector&lt;int&gt; vec_number;
    vector&lt;int&gt;::iterator iter;

    cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot; &lt;&lt; endl;
    while(cin &gt;&gt; tmp)
    {
        vec_number.push_back(tmp);
    }
    iter = vec_number.begin();
    while(iter != vec_number.end())
    {
        cout &lt;&lt; *iter &lt;&lt; endl;
        iter++;
    }

    return 0;

}
</code></pre>
<p>Weil da greife ich doch auch nach einem pushback auf iter zu oder?</p>
<p>-GhostfaceChilla-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119234</guid><dc:creator><![CDATA[GhostfaceChilla]]></dc:creator><pubDate>Wed, 14 Sep 2011 11:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Vector on Wed, 14 Sep 2011 11:53:19 GMT]]></title><description><![CDATA[<p>GhostfaceChilla schrieb:</p>
<blockquote>
<p>Weil da greife ich doch auch nach einem pushback auf iter zu oder?</p>
</blockquote>
<ol>
<li>Du greifst auf den Container zu, nicht auf iter.</li>
<li>Nein, das sollte funktionieren. Du weist iter einen gültigen Wert zu, nachdem du den Container mit push_back verändert hast. Da du danach nichts mehr am Container änderst, bleiben die Iteratoren auch gültig.</li>
<li>Die zweite While-Schleife solltest du durch eine passende for-schleife ersetzen, das ist der übliche Weg, über Container zu iterieren und liest sich deshalb für das geübte Auge einfacher.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2119238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119238</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 14 Sep 2011 11:53:19 GMT</pubDate></item></channel></rss>