<?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[Letztes Suchelement in Liste löschen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eins std::list&lt;std::pair&lt;int, int&gt; &gt;, die Bildschirmkoordinaten enthält. Die Koordinaten beschreiben Punkte, die man setzen und löschen kann.</p>
<p>Setzen ist einfach, mit push_back, aber das Löschen bereitet mir Probleme. Für den Fall, dass zwei Punkte (5² Pixel groß) übereinander liegen oder sich überschneiden, soll der oberste Punkt gelöscht werden, der in der Liste also am weitesten hinten liegt.</p>
<p>Die Liste könnte man mit einem reverse-iterator ja gut durchlaufen, und überprüfen, ob für einen Punkt die Bedingungen zutreffen, dass die Maus auf ihm liegt. Aber wie lösche ich das Element dann? erase erwartet einen normalen iterator. Ich bekomme es aber nicht gebacken, auf einen normalen Iterator zu casten, bzw. einen normalen Iterator kann ich auch nicht dekrementieren, um die Liste rückwärts zu durchlaufen.</p>
<p>Wie löst man das am besten?</p>
<p>Danke &amp; mfg!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203806/letztes-suchelement-in-liste-löschen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 07:10:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203806.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Jan 2008 18:26:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Sat, 26 Jan 2008 18:26:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eins std::list&lt;std::pair&lt;int, int&gt; &gt;, die Bildschirmkoordinaten enthält. Die Koordinaten beschreiben Punkte, die man setzen und löschen kann.</p>
<p>Setzen ist einfach, mit push_back, aber das Löschen bereitet mir Probleme. Für den Fall, dass zwei Punkte (5² Pixel groß) übereinander liegen oder sich überschneiden, soll der oberste Punkt gelöscht werden, der in der Liste also am weitesten hinten liegt.</p>
<p>Die Liste könnte man mit einem reverse-iterator ja gut durchlaufen, und überprüfen, ob für einen Punkt die Bedingungen zutreffen, dass die Maus auf ihm liegt. Aber wie lösche ich das Element dann? erase erwartet einen normalen iterator. Ich bekomme es aber nicht gebacken, auf einen normalen Iterator zu casten, bzw. einen normalen Iterator kann ich auch nicht dekrementieren, um die Liste rückwärts zu durchlaufen.</p>
<p>Wie löst man das am besten?</p>
<p>Danke &amp; mfg!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444140</guid><dc:creator><![CDATA[Suche elegante Lösung]]></dc:creator><pubDate>Sat, 26 Jan 2008 18:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Sat, 26 Jan 2008 18:31:42 GMT]]></title><description><![CDATA[<p>Warum speicherst du Bildschirmkoordinaten in ner Liste? Nimm doch einfach ein Array mit der größe des Bildschirms und setz dann z.B. per enum Werte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444144</guid><dc:creator><![CDATA[midnight]]></dc:creator><pubDate>Sat, 26 Jan 2008 18:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Sat, 26 Jan 2008 20:59:52 GMT]]></title><description><![CDATA[<p>Naja, eine Liste erscheint mir recht passend...</p>
<p>Einfach ein Array mit den Bildschirmkoordinaten gefällt mir gar nicht, was wenn ich später mal eine Scrollfunktion in meiner Anwedung habe, dann benötige ich ein verdammt großes Array. Und die meisten Array-Elemente wären dann einfach leer, müsste trotzdem das gesamte Array durchlaufen um die Punkte zu rendern!</p>
<p>Was meinst du genau mit &quot;per enum Werte setzen?&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444214</guid><dc:creator><![CDATA[Suche elegante Lösung]]></dc:creator><pubDate>Sat, 26 Jan 2008 20:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Sat, 26 Jan 2008 23:47:22 GMT]]></title><description><![CDATA[<p>Letztens in nem Forum gefunden:<br />
<a href="http://img184.imageshack.us/img184/426/containerchoicecw8.png" rel="nofollow">http://img184.imageshack.us/img184/426/containerchoicecw8.png</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444263</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 26 Jan 2008 23:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Sun, 27 Jan 2008 10:20:58 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber wie lösche ich das Element dann? erase erwartet einen normalen iterator. Ich bekomme es aber nicht gebacken, auf einen normalen Iterator zu casten, bzw. einen normalen Iterator kann ich auch nicht dekrementieren, um die Liste rückwärts zu durchlaufen.</p>
</blockquote>
<p>Mittels &quot;reverse_iterator::base()&quot; erhältst du wieder einen &quot;iterator&quot;, den du dann für erase verwenden kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444362</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sun, 27 Jan 2008 10:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Sun, 27 Jan 2008 18:12:02 GMT]]></title><description><![CDATA[<p>Danke für den Tipp mit reverse_iterator::base()</p>
<p>Leider zeigt der Iterator nicht direkt auf das selbe Element, deshalb dekrementiere ich den Iterator, den mir base() zurückliefert. Aber warum geht das überhaupt?! Wenn es ein normaler Iterator ist, kann ich ihn doch eigentlich gar nicht inkrementieren, aber das funktioniert tadellos?</p>
<pre><code class="language-cpp">points.erase(--revIter.base());
</code></pre>
<p><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>
<p>(D)Evil: Ist zwar eine schöne Grafik, aber kannst du mir bitte noch etwas näher erleutern, worauf du hinaus willst? Ich finde eine Liste ist der passenste Container, Vektoren hätten sonst ja auch den Nachteil, dass sie neu geschrieben werden müssen, wenn ich ein Element in der Mitte lösche...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444650</guid><dc:creator><![CDATA[Suche elegante Lösung]]></dc:creator><pubDate>Sun, 27 Jan 2008 18:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Mon, 28 Jan 2008 18:13:17 GMT]]></title><description><![CDATA[<p>*push*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445241</guid><dc:creator><![CDATA[Suche elegante Lösung]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:13:17 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Mon, 28 Jan 2008 18:23:06 GMT]]></title><description><![CDATA[<p>Suche elegante Lösung schrieb:</p>
<blockquote>
<p>(D)Evil: Ist zwar eine schöne Grafik, aber kannst du mir bitte noch etwas näher erleutern, worauf du hinaus willst? Ich finde eine Liste ist der passenste Container, Vektoren hätten sonst ja auch den Nachteil, dass sie neu geschrieben werden müssen, wenn ich ein Element in der Mitte lösche...</p>
</blockquote>
<p>Wie oft passiert das denn? Eine gute Faustregel ist: Verwende immer einen Vektor, es sei denn, es zeigt sich im Gebrauch, dass das Löschen und Einfügen in der Mitte zu oft passiert.</p>
<p>Zum Problem: kann ich nicht nachvollziehen. Wieso sollte das nicht gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445253</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Mon, 28 Jan 2008 18:33:13 GMT]]></title><description><![CDATA[<p>Was ist eigentlich der Sinn des ganzen. Was soll das Programm machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445267</guid><dc:creator><![CDATA[midnight.]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Letztes Suchelement in Liste löschen on Mon, 28 Jan 2008 19:42:53 GMT]]></title><description><![CDATA[<p>Hmm gut, also handelt es sich bei dem Iterator von ::base() um einen bidirectional_iterator? Die Faustregel hab ich schonmal wo gehört, aber andererseits... was spricht dagegen, die Container näher kennen zu lernen und sich so vllt. in deren Selektion zu üben? <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>midnight: Einfach die Möglichkeit bieten, Punkte auf dem Bildschirm zu setzen und zu löschen. <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="😉"
    /> Bin bisschen am rumspielen und lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445321</guid><dc:creator><![CDATA[Suche elegante Lösung]]></dc:creator><pubDate>Mon, 28 Jan 2008 19:42:53 GMT</pubDate></item></channel></rss>