<?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 iterators incompatible]]></title><description><![CDATA[<p>Ich bekomme den oben genannten fehler bei einem Server-Programm bei diesem code:</p>
<pre><code>bool TimersQueue::remove(Timer* timer) {
	vector&lt;Timer*&gt;::iterator iter = find(c.begin(), c.end(), timer);
	if(iter != c.end()) {
		vector &lt;Timer*&gt; timers;
		while(top() != timer) {
			timers.push_back(top());
			pop();
		}
		pop();
		while(!timers.empty()) {
			push(timers.back());
			timers.pop_back();
		}
		return true;
	}
	return false;
}
</code></pre>
<p>ich hab schon nach lösungen gesucht aber bin mir nicht so ganz sicher wie ich das beheben kann.<br />
Ich nehme an if(iter != c.end()) { ist das problem.<br />
Ich hab irgendwo gelesen das .pushback die iteratoren invalidiert.<br />
Wie kann ich das jetzt richtig machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266905/vector-iterators-incompatible</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 18:15:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266905.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 May 2010 13:51:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 13:51:51 GMT]]></title><description><![CDATA[<p>Ich bekomme den oben genannten fehler bei einem Server-Programm bei diesem code:</p>
<pre><code>bool TimersQueue::remove(Timer* timer) {
	vector&lt;Timer*&gt;::iterator iter = find(c.begin(), c.end(), timer);
	if(iter != c.end()) {
		vector &lt;Timer*&gt; timers;
		while(top() != timer) {
			timers.push_back(top());
			pop();
		}
		pop();
		while(!timers.empty()) {
			push(timers.back());
			timers.pop_back();
		}
		return true;
	}
	return false;
}
</code></pre>
<p>ich hab schon nach lösungen gesucht aber bin mir nicht so ganz sicher wie ich das beheben kann.<br />
Ich nehme an if(iter != c.end()) { ist das problem.<br />
Ich hab irgendwo gelesen das .pushback die iteratoren invalidiert.<br />
Wie kann ich das jetzt richtig machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897912</guid><dc:creator><![CDATA[Buya23]]></dc:creator><pubDate>Sun, 16 May 2010 13:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 14:12:37 GMT]]></title><description><![CDATA[<p>Ja, den Fehler bekommt man normalerweise wenn man Iteratoren vergleicht, die von verschiedenen vectoren stammen oder auch wenn man Iteratoren von einem vector stammen, aber zwischendurch ungültig geworden sind. Und ja: push_back kann Iteratoren ungültig werden lassen.</p>
<p>Bei dir findet zwischen der Initialisierung von iter und dem Vergleich nichts statt was den Iterator ungültig werden lassen könnte. Bist du ganz sicher, dass der Fehler dort auftritt? Arbeitet dein Programm zufällig mit mehreren Threads?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897919</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 16 May 2010 14:12:37 GMT</pubDate></item><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 14:15:52 GMT]]></title><description><![CDATA[<p>Ja tut es und es passiert auch ganz sicher da.<br />
Aber komischerweise nicht immer wenn die funktion aufgerufen wird, nur manchmal.<br />
<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/1897920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897920</guid><dc:creator><![CDATA[Buya23]]></dc:creator><pubDate>Sun, 16 May 2010 14:15:52 GMT</pubDate></item><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 14:20:24 GMT]]></title><description><![CDATA[<p>Buya23 schrieb:</p>
<blockquote>
<p>Ja tut es und es passiert auch ganz sicher da.<br />
Aber komischerweise nicht immer wenn die funktion aufgerufen wird, nur manchmal.<br />
<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>
</blockquote>
<p>Es arbeitet mit mehreren Threads? Ich vermute, dass dort das Problem liegt. Ein anderer Thread macht irgendwas mit dem vector, dass die Iteratoren ungültig werden lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897921</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 16 May 2010 14:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 14:25:39 GMT]]></title><description><![CDATA[<p>was hat es eigentlich mit &quot;Critical section&quot; auf sich?<br />
kann es damit was zu tun haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897928</guid><dc:creator><![CDATA[Buya23]]></dc:creator><pubDate>Sun, 16 May 2010 14:25:39 GMT</pubDate></item><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 14:30:16 GMT]]></title><description><![CDATA[<p>Buya23 schrieb:</p>
<blockquote>
<p>was hat es eigentlich mit &quot;Critical section&quot; auf sich?<br />
kann es damit was zu tun haben?</p>
</blockquote>
<p>Und wie! Der Begriff critical section drückt gerade aus, dass es etwas damit zu tun hat. Aber vielleicht solltest du dich erstmal mit diesen Grundlagen der Threadprogrammierung beschäftigen, dann dürfte dir alles klar werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897930</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 16 May 2010 14:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to vector iterators incompatible on Sun, 16 May 2010 14:30:57 GMT]]></title><description><![CDATA[<p>Ja. Wenn zwischen Zeile (2) und (3) ein anderer Thread den <code>vector</code> verändert, dann kann es zu so einem Problem kommen.</p>
<p>Aber das Thema ist sehr ausgiebig und du solltest dich da lieber gründlich einarbeiten, weil es sehr viele andere Probleme zu beachten gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897932</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 16 May 2010 14:30:57 GMT</pubDate></item></channel></rss>