<?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[Löschen eines Elements in std::list konstant?]]></title><description><![CDATA[<p>Hallo</p>
<p>wenn ich in einer std::list das n-te Element löschen will, geht dann die Liste von vorne Linear die Liste durch, bis sie auf das n-te Element stößt oder geht das sofort in O(1)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246507/löschen-eines-elements-in-std-list-konstant</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 00:21:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246507.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Jul 2009 11:19:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 11:19:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>wenn ich in einer std::list das n-te Element löschen will, geht dann die Liste von vorne Linear die Liste durch, bis sie auf das n-te Element stößt oder geht das sofort in O(1)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751486</guid><dc:creator><![CDATA[listenfr]]></dc:creator><pubDate>Wed, 29 Jul 2009 11:19:26 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 11:21:08 GMT]]></title><description><![CDATA[<p>das ist O(n). Steht im Standard, sollte aber vom Aufbau der Liste her auch klar sein: Man muss sich vom Kopf der Liste her bis zum gewünschten Element hinhangeln, random access gibts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751488</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Jul 2009 11:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 11:31:22 GMT]]></title><description><![CDATA[<p>Ja, eigentlich ist es klar. Ich frage nur, weil ich jetzt schon mehrmals in Foren gelesen habe, dass insert und delete bei einer Liste immer konstant ist. hm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751494</guid><dc:creator><![CDATA[listenfr]]></dc:creator><pubDate>Wed, 29 Jul 2009 11:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 11:35:33 GMT]]></title><description><![CDATA[<p>insert und delete ist konstant... Du mußt das entsprechende Listenelement (also einen Iterator darauf) aber schon in der Hand halten. Die Zeit die Du brauchst um den zu finden, kannst Du nicht insert/delete aufbrummen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751499</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 29 Jul 2009 11:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 13:55:43 GMT]]></title><description><![CDATA[<p>Das n-te Element zu löschen besteht eben aus zwei Schritten:</p>
<ol>
<li>Das n-te Element <em>finden</em> (O(n))</li>
<li>Das gefundene Element löschen (O(1), wie überall gesagt wird)</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1751651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751651</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Jul 2009 13:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 21:15:54 GMT]]></title><description><![CDATA[<p>Das find ich etwas unpräzise. Das n-te Element zu finden kann viel schneller gehen... je nach Kontex und welche weiteren Datenstrukturen noch so vorhanden sind. Da einfach mal so O(n) zu veranschlagen überschätzt die Komplexität häufig bei weitem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751949</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Wed, 29 Jul 2009 21:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 21:33:28 GMT]]></title><description><![CDATA[<p>Jester schrieb:</p>
<blockquote>
<p>Das find ich etwas unpräzise. Das n-te Element zu finden kann viel schneller gehen... je nach Kontex und welche weiteren Datenstrukturen noch so vorhanden sind. Da einfach mal so O(n) zu veranschlagen überschätzt die Komplexität häufig bei weitem.</p>
</blockquote>
<p>Im Durchschnitt, ohne irgendwelche Vorgaben, Sortierungen usw. ist ein std::list&lt;&gt;::find() doch O(n) oder irre ich mich da? Natürlich kann man in speziellen Fällen immer noch was rauskitzeln, nur wurde hier eine allgemeine Frage gestellt - und afaik ist O(n) da die ebenso allgemeine antwort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751956</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Jul 2009 21:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 21:35:15 GMT]]></title><description><![CDATA[<p>Jester schrieb:</p>
<blockquote>
<p>Das find ich etwas unpräzise. Das n-te Element zu finden kann viel schneller gehen... je nach Kontex und welche weiteren Datenstrukturen noch so vorhanden sind. Da einfach mal so O(n) zu veranschlagen überschätzt die Komplexität häufig bei weitem.</p>
</blockquote>
<p>bei einer std::list ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751958</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 29 Jul 2009 21:35:15 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Wed, 29 Jul 2009 23:20:41 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Im Durchschnitt, ohne irgendwelche Vorgaben, Sortierungen usw. ist ein std::list&lt;&gt;::find() doch O(n) oder irre ich mich da?</p>
</blockquote>
<p>Seit wann hat <code>std::list</code> ein <code>find()</code> ? <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>
<p>Aber ich würde auch meinen, O(n) sei fürs Suchen in einer verketteten Liste gerechtfertigt. Wenn man stets alle Spezialfälle berücksichtigt, kann eben keine allgemeingültigen Komplexitätsangaben mehr machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751994</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 29 Jul 2009 23:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Thu, 30 Jul 2009 11:31:46 GMT]]></title><description><![CDATA[<p>Ich wollte lediglich anmerken, dass O(n) zwar richtig ist, aber eben keinesfalls scharf. Beispielsweise würde mit der Analyse bei so ziemlich allen Algorithmen bei denen ich je Listen benutzt habe so ein zusätzlicher Faktor n in die Laufzeit mit reinkommen. Mein Punkt ist lediglich, dass es häufig eben besser geht, indem man ein geschicktes Mapping von Elementen auf ListNodes ermöglicht (da ist std::list natürlich nicht gerade super für, aber es geht teilweise).</p>
<p>Konkret würde ich folgende Ansicht vertreten: entweder man schafft es effizient die richtige Stelle zum einfügen/löschen zu finden (sagen wir in konstanter oder logarithmischer Zeit) oder man sollte die liste wegwerfen und einen vector oder sowas nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752221</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 30 Jul 2009 11:31:46 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Thu, 30 Jul 2009 11:42:43 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Im Durchschnitt, ohne irgendwelche Vorgaben, Sortierungen usw. ist ein std::list&lt;&gt;::find() doch O(n) oder irre ich mich da?</p>
</blockquote>
<p>Seit wann hat <code>std::list</code> ein <code>find()</code> ? <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>
</blockquote>
<p>Sry mein Fehler *Kopf-&gt;Tisch*<br />
std::find&lt;std::list&lt;&gt;::iterator,&gt; wäre richtig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> bzw- nach den vom OT gegebenen Vorgaben (Liste, n-tes Element) std::advance&lt;std::list&lt;&gt;::iterator,&gt; was O(n) ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752241</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 30 Jul 2009 11:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to Löschen eines Elements in std::list konstant? on Thu, 30 Jul 2009 12:33:32 GMT]]></title><description><![CDATA[<p>klugscheisser inc!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752290</guid><dc:creator><![CDATA[omg0r]]></dc:creator><pubDate>Thu, 30 Jul 2009 12:33:32 GMT</pubDate></item></channel></rss>