<?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[Wofür habt ihr std::list benutzt?]]></title><description><![CDATA[<p>Mich würde mal interessieren, was mit <code>std::list</code> so gemacht wird. Der Container hat bestimmte Eigenschaften, die <code>vector</code> nicht bieten kann. Es gibt bestimmt Fälle, in denen diese Eigenschaften die Verwendung von <code>list</code> rechtfertigen. Habt ihr konkrete Beispiele, in denen <code>list</code> weniger fehleranfällig, besser lesbar oder schneller ist als <code>vector</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323760/wofür-habt-ihr-std-list-benutzt</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 20:04:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323760.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Feb 2014 19:32:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 19:32:51 GMT]]></title><description><![CDATA[<p>Mich würde mal interessieren, was mit <code>std::list</code> so gemacht wird. Der Container hat bestimmte Eigenschaften, die <code>vector</code> nicht bieten kann. Es gibt bestimmt Fälle, in denen diese Eigenschaften die Verwendung von <code>list</code> rechtfertigen. Habt ihr konkrete Beispiele, in denen <code>list</code> weniger fehleranfällig, besser lesbar oder schneller ist als <code>vector</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383244</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Fri, 14 Feb 2014 19:32:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 19:38:09 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Mich würde mal interessieren, was mit <code>std::list</code> so gemacht wird. Der Container hat bestimmte Eigenschaften, die <code>vector</code> nicht bieten kann. Es gibt bestimmt Fälle, in denen diese Eigenschaften die Verwendung von <code>list</code> rechtfertigen. Habt ihr konkrete Beispiele, in denen <code>list</code> weniger fehleranfällig, besser lesbar oder schneller ist als <code>vector</code> ?</p>
</blockquote>
<p>Hab sie nie benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383245</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 14 Feb 2014 19:38:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 19:59:15 GMT]]></title><description><![CDATA[<p>Vor allem, wenn ich stabile Objekte brauche (Zeiger und Referenzen auf Elemente bleiben gültig).</p>
<p>Es gibt inzwischen aber auch spezialisierte Container wie <code>boost::stable_vector</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383246</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 14 Feb 2014 19:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 20:00:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Vor allem, wenn ich stabile Objekte brauche (Zeiger und Referenzen auf Elemente bleiben gültig).</p>
<p>Es gibt inzwischen aber auch spezialisierte Container wie <code>boost::stable_vector</code> .</p>
</blockquote>
<p>das klingt für mich nach einer std::deque.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383247</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 14 Feb 2014 20:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 20:02:03 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>das klingt für mich nach einer std::deque.</p>
</blockquote>
<p><code>std::deque</code> ist nur beim Einfügen an den Enden stabil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383249</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 14 Feb 2014 20:02:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 01:26:13 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>das klingt für mich nach einer std::deque.</p>
</blockquote>
<p><code>std::deque</code> ist nur beim Einfügen an den Enden stabil.</p>
</blockquote>
<p><s>[c]std::deque[/c] ist gleich stabil beim einfügen am anfang sowie am ende.</s></p>
<p>edit: unnötig verbessert da ich nicht richtig gelesen hab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383250</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Sat, 15 Feb 2014 01:26:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 21:51:50 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Vor allem, wenn ich stabile Objekte brauche (Zeiger und Referenzen auf Elemente bleiben gültig).</p>
</blockquote>
<p>Meine typische Lösung ist da immer ein <code>unique_ptr</code> , den ich in irgendeinen Container wie <code>unordered_map</code> stopfe. So muss ich nicht viel beachten, wenn ich die Erzeugung des Objektes vom Einfügen in den Container trennen möchte. <code>emplace</code> mag ich nicht so, weil es die Erzeugung des Objektes mit dem Einfügen in den Container untrennbar verbindet. Das Objekt einer meiner Klassen zwischen Erzeugung und Einfügen durch die Gegend zu moven ist mir zu gefährlich, weil ich doch recht oft <code>this</code> an Callbacks binde, auch mal in einem Konstruktor. Das ist wahrscheinlich eine schlechte Idee, aber ich weiß es noch nicht besser.</p>
<p>Je mehr ich Code refaktoriere, desto mehr Lambdas, <code>function</code> s und <code>boost::signals</code> kommen vor. <code>virtual</code> wird seltener. Als Container benutze ich fast nur noch <code>vector</code> und <code>unordered_map</code> . <code>shared_ptr</code> kommt auch vor, aber viel seltener als <code>unique_ptr</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383256</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Fri, 14 Feb 2014 21:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Fri, 14 Feb 2014 23:31:03 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Je mehr ich Code refaktoriere, desto mehr Lambdas, <code>function</code> s und <code>boost::signals</code> kommen vor.</p>
</blockquote>
<p>Oh, das ist bei mir gerade andersrum, ich mache die beim Aufräumen weg(!), unnamed ist unverstanden.</p>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Als Container benutze ich fast nur noch <code>vector</code> und <code>unordered_map</code> .</p>
</blockquote>
<p>Jup, ich auch, seit immer. Und noch den Heap/priorityqueue (und niemals map) und noch std::forward_map (bis neulich halt eigenen schmalen Code, nu ist alles im standard.)</p>
<p>Also<br />
Vector //Fast alles 99%<br />
Heap //Der Rest, map sucht ja eh fast immer nur top 0.5%<br />
Hashtable //Eben wenn mal nicht map/top gebraucht wird 0.5%<br />
StackAsList //In Kombination mit anderen als Nachstufe.<br />
QueueAsList oder deque als Verzörerer, wenn der Algo es braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383267</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 14 Feb 2014 23:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 01:23:49 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>das klingt für mich nach einer std::deque.</p>
</blockquote>
<p><code>std::deque</code> ist nur beim Einfügen an den Enden stabil.</p>
</blockquote>
<p><code>std::deque</code> ist gleich stabil beim einfügen am anfang sowie am ende.</p>
</blockquote>
<p>Steht doch da: &quot;an den Enden&quot;. Das heisst am vorderen und am hinteren Ende.<br />
Beim Einfügen/Löschen in der mitte is aber nix mehr stabil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383271</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 15 Feb 2014 01:23:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 01:25:11 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>das klingt für mich nach einer std::deque.</p>
</blockquote>
<p><code>std::deque</code> ist nur beim Einfügen an den Enden stabil.</p>
</blockquote>
<p><code>std::deque</code> ist gleich stabil beim einfügen am anfang sowie am ende.</p>
</blockquote>
<p>Steht doch da: &quot;an den Enden&quot;. Das heisst am vorderen und am hinteren Ende.<br />
Beim Einfügen/Löschen in der mitte is aber nix mehr stabil.</p>
</blockquote>
<p>jo, du hast recht, ich kann nicht richtig lesen. peinlich. ist durchgestrichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383272</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Sat, 15 Feb 2014 01:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 01:33:26 GMT]]></title><description><![CDATA[<p>@asfdlol<br />
Und ich kann nicht richtig schreiben, hab Mitte klein geschrieben. Hihi.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22298">@TyRoXx</a><br />
Ich kann mich nicht erinnern <code>std::list</code> mal verwendet zu haben.</p>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Es gibt bestimmt Fälle, in denen diese Eigenschaften die Verwendung von <code>list</code> rechtfertigen. Habt ihr konkrete Beispiele, in denen <code>list</code> weniger fehleranfällig, besser lesbar oder schneller ist als <code>vector</code> ?</p>
</blockquote>
<p>Konkrete Beispiele hab' ich natürlich keine, hab das Teil ja noch nie verwendet.<br />
Ich könnte mir vorstellen dass <code>std::list</code> gut ist wenn man die Liste verdammt oft ändert, aber kaum jemals liest. Und wenn man liest, immer nur linear durchfährt.</p>
<p>Persönlich würde ich dann aber auch eher zu ner intrusive List tendieren - bzw. es mir zumindest gut überlegen. Mit <code>emplace</code> kann man in C++11 ja jetzt auch Elemente in eine List reintun ohne dass kopiert werden muss. Da ich aber in der Arbeit noch mit VC2005 arbeiten muss hab ich kein <code>emplace</code> , und dann hat die intrusive List bei Typen die nicht billigst zu kopieren sind wieder die Nase vorne.</p>
<p>Allerdings müsste der Unterschied Modifizieren &gt;&gt; Lesen schon massiv sein. Wenns nur um stabile Zeiger etc. geht, oder darum dass die Objekte relativ teuer zu kopieren/moven sind, kann man ja auch nen Pointer-Vektor nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383273</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 15 Feb 2014 01:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 02:32:12 GMT]]></title><description><![CDATA[<p>Ähnlich wie Nexus: Wenn es wichtig ist, dass Iteratoren bzw. Zeiger und Referenzen auf Listenelemente auch nach Modifikation des Containers gültig bleiben. Beispiel: Liste von Observern, wenn man den Fall unterstützen muss, dass ein Observer sich in Reaktion auf die Notification aus der Liste löscht...</p>
<p>Seit ich vom typischen Eventsystem abgekommen bin und keine Observerlisten mehr brauche, hatte ich wohl kaum mehr einen Fall, wo ich eine std::list benutzt hätte, zumindest im Moment fällt mir jedenfalls nichts ein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383274</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 15 Feb 2014 02:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 08:53:10 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Konkrete Beispiele hab' ich natürlich keine, hab das Teil ja noch nie verwendet.<br />
Ich könnte mir vorstellen dass <code>std::list</code> gut ist wenn man die Liste verdammt oft ändert, aber kaum jemals liest. Und wenn man liest, immer nur linear durchfährt.</p>
</blockquote>
<p>Zum Linear-Durchfahren taugt alleroffensichtlichst der vector am besten, weil Prozessor, OS, Compiler oder Mensch prefetchen können.</p>
<p>Der klassische Pseudogrund für die list ist, daß der vector nicht wachsen kann, bzw so viel Zeit beim Wachsen verbrät. Aber man müßte schon mit Gewalt was konstruieren, wo das der Fall ist.</p>
<p>Dazumal war ein Grund für list, wenn man Nichtkopierbare Sachen wie ostreams ablegen musste.</p>
<p>Jetzt bleiben mir eigentlich nur komische Fälle, wie wenn die Objekte unglaublich lahm zu moven sind (ach, unique_ptr davor und gut), oder wenn die Objekte erheblich groß sind und fast immer nur 0 oder 1 Element drin (aber dann auch lieber forward_list), finde kein gutes Beispiel.</p>
<p>Eures mit den langlebigen iteratoren, wäre da size_t nichrt angebraucht? Warum nicht, ah, die Besitzverhältnisse, wahrscheinlich ist die list nur da, um durchlaufen werden zu können, die Besitzer sind aber Andere, sie tun in KOnstruktor/Destruktor ihre Objekte in die list rein/raus. Da drängt sich gleich hustbaers intrusive List auf. Auch bei den Observern normalerweise. Außer vielleicht, man will sich oft (und das wird zu Laufzeit entschieden!) von gegebenenfalls mehreren Objekten observieren lassen (wird auch wieder eine forward_list).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383283</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 15 Feb 2014 08:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 11:53:37 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Eures mit den langlebigen iteratoren, wäre da size_t nichrt angebraucht?</p>
</blockquote>
<p>Das hilft dir nichts, wenn die Position des referenzierten Elements sich ändern kann, z.B. weil Elemente aus dem Container gelöscht werden... <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/2383304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383304</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 15 Feb 2014 11:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür habt ihr std::list benutzt? on Sat, 15 Feb 2014 18:34:45 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Seit ich vom typischen Eventsystem abgekommen bin und keine Observerlisten mehr brauche,</p>
</blockquote>
<p>Was verwendest du statt dessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2383368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2383368</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 15 Feb 2014 18:34:45 GMT</pubDate></item></channel></rss>