<?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[list-iterator + distance]]></title><description><![CDATA[<p>hallo</p>
<p>wie sollte man den difference_type eines listen-iterators wählen? (doppelt verkettete liste)<br />
ich hab bis jz ein einfaches typedef auf den size_type (was wiederrum nen typedef auf std::size_t ist).<br />
Eigentlich sollte das ja reichen, weil nur std::distance den typen wirklich verwendet, oder irre ich mich da?</p>
<p>dann habe ich direkt noch ne frage zu distance:</p>
<p><a href="http://www.cplusplus.com/reference/std/iterator/distance/" rel="nofollow">http://www.cplusplus.com/reference/std/iterator/distance/</a> schrieb:</p>
<blockquote>
<p>The number of increments <strong>or decrements</strong> needed to get from first to last.</p>
</blockquote>
<p>wie soll das funktionieren?<br />
wenn ich das richtig verstanden habe, geht nur einwas von beiden - sinnigerweise increment (und bei random access natürlich ne einfache subtraktion)<br />
ist distance so gedacht, dass man auch <code>std::distance(liste.end(), liste.begin())</code> aufrufen kann?<br />
also zumindest, wenn man den iterator von <code>std::bidirectional_iterator_tag</code> abgeleitet hat, macht das auf der einen seite ja durchaus Sinn - und der difference-type müsste dann auch negativ werden können - auf der anderen seite weiß man ja eigtl schon immer, in welche richtung man gehen möchte und damit reicht der unsigned wert wieder als difference_type.</p>
<p>der zweite Anwendungsbereich, der mir noch eingefallen ist, wäre std::advance - allerdings nutzt das den difference_type offensichtlich gar nicht, sondern es gibt noch nen extra template-parameter dafür.</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243677/list-iterator-distance</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 21:11:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243677.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Jun 2009 18:15:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to list-iterator + distance on Fri, 19 Jun 2009 18:15:08 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>wie sollte man den difference_type eines listen-iterators wählen? (doppelt verkettete liste)<br />
ich hab bis jz ein einfaches typedef auf den size_type (was wiederrum nen typedef auf std::size_t ist).<br />
Eigentlich sollte das ja reichen, weil nur std::distance den typen wirklich verwendet, oder irre ich mich da?</p>
<p>dann habe ich direkt noch ne frage zu distance:</p>
<p><a href="http://www.cplusplus.com/reference/std/iterator/distance/" rel="nofollow">http://www.cplusplus.com/reference/std/iterator/distance/</a> schrieb:</p>
<blockquote>
<p>The number of increments <strong>or decrements</strong> needed to get from first to last.</p>
</blockquote>
<p>wie soll das funktionieren?<br />
wenn ich das richtig verstanden habe, geht nur einwas von beiden - sinnigerweise increment (und bei random access natürlich ne einfache subtraktion)<br />
ist distance so gedacht, dass man auch <code>std::distance(liste.end(), liste.begin())</code> aufrufen kann?<br />
also zumindest, wenn man den iterator von <code>std::bidirectional_iterator_tag</code> abgeleitet hat, macht das auf der einen seite ja durchaus Sinn - und der difference-type müsste dann auch negativ werden können - auf der anderen seite weiß man ja eigtl schon immer, in welche richtung man gehen möchte und damit reicht der unsigned wert wieder als difference_type.</p>
<p>der zweite Anwendungsbereich, der mir noch eingefallen ist, wäre std::advance - allerdings nutzt das den difference_type offensichtlich gar nicht, sondern es gibt noch nen extra template-parameter dafür.</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729699</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 19 Jun 2009 18:15:08 GMT</pubDate></item><item><title><![CDATA[Reply to list-iterator + distance on Fri, 19 Jun 2009 18:20:39 GMT]]></title><description><![CDATA[<p>Ich denke, damit ist gemeint &quot;die Anzahl der Inkrementierungen von begin nach end beziehungsweise die Anzahl der Dekrementierungen von end nach begin&quot;.<br />
Von distance bei einer doppelt verkettten Liste zu erwaten, daß es in die Kristallkugel blickt und den kurzen Weg über die zehn Knoten findet, statt zuerst die zweihundertfünfig Millionen Knoten in Richtung eines Listenendes zu laufen, wäre sehr untypisch für C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729702</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 19 Jun 2009 18:20:39 GMT</pubDate></item><item><title><![CDATA[Reply to list-iterator + distance on Fri, 19 Jun 2009 18:36:43 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Von distance bei einer doppelt verkettten Liste zu erwaten, daß es in die Kristallkugel blickt und den kurzen Weg über die zehn Knoten findet, statt zuerst die zweihundertfünfig Millionen Knoten in Richtung eines Listenendes zu laufen, wäre sehr untypisch für C++.</p>
</blockquote>
<p>ja - und außerdem imho auch noch (mit den parametern) nicht implementierbar - weil end und begin nicht bekannt sind...</p>
<p>was ich ja eigtl wissen wollte:<br />
also ist size_t als difference_type bei listen vollkommen ok?!</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729710</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 19 Jun 2009 18:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to list-iterator + distance on Fri, 19 Jun 2009 18:40:27 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>wie sollte man den difference_type eines listen-iterators wählen? (doppelt verkettete liste)<br />
ich hab bis jz ein einfaches typedef auf den size_type (was wiederrum nen typedef auf std::size_t ist).</p>
</blockquote>
<p>Ich dachte, dass difference_type ein vorzeichenbehafteter Ganzzahltyp sein soll. Das ist ja auch der Typ, den zB std::advance erwartet, um einen Iterator zu bewegen (auch rückwärts). Der Default-Typ für difference_type (siehe std::iterator [1]) ist auch std::ptrdiff_t.</p>
<p>[1] <a href="http://www.cplusplus.com/reference/std/iterator/iterator/" rel="nofollow">http://www.cplusplus.com/reference/std/iterator/iterator/</a></p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729713</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 19 Jun 2009 18:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to list-iterator + distance on Fri, 19 Jun 2009 18:47:02 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Das [ein vorzeichenbehafteter Ganzzahltyp] ist ja auch der Typ, den zB std::advance erwartet, um einen Iterator zu bewegen (auch rückwärts).</p>
</blockquote>
<p><a href="http://www.cplusplus.com/reference/std/iterator/advance/" rel="nofollow">advance</a> hat (wie oben geschrieben) nen template-parameter dafür</p>
<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Der Default-Typ für difference_type ist auch std::ptrdiff_t.</p>
</blockquote>
<p>jopp - deshalb hab ich ja angefangen zu zweifeln - und, weil evtl ja auch iwer mal eine entfernung speichern möchte, die nicht zwingend positiv ist...</p>
<p>wobei ich mir die frage ja mit der idee gerade selbst beantwortet habe ^^</p>
<p>also werd ichs wohl in ptrdiff_t ändern - danke für den denkanstoß <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1729718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1729718</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 19 Jun 2009 18:47:02 GMT</pubDate></item></channel></rss>