<?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[Reverse-Iterator-Klasse als Adapter, oder ableiten??]]></title><description><![CDATA[<p>Huhu,</p>
<p>ist es besser den reverse_iterator meines eigenen Containers von der normalen iterator-Klasse abzuleiten, oder mit Hilfe eines Iteratorobjekts in der reverse_iterator Klasse zu arbeiten?</p>
<p>Beim ableiten muss ich mich ja nur um ++, --, kümmern, diese entsprechend &quot;überladen&quot;? und die anderen Methoden einfach ignorieren bzw implizit die Originale(::iterator) nutzen.</p>
<p>Beim Adapter müsste ich jede Methode nochmal hinschreiben und den Aufruf für das darunter liegende iterator-Objekt tätigen, right? Dort kann ich dann einfach Inkrement und Dekrement vom Objekt vertauschen, um richtige Semantik zu erreichen und fertig.</p>
<p>Was meint ihr?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220077/reverse-iterator-klasse-als-adapter-oder-ableiten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:00:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220077.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Aug 2008 17:25:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Mon, 11 Aug 2008 17:25:50 GMT]]></title><description><![CDATA[<p>Huhu,</p>
<p>ist es besser den reverse_iterator meines eigenen Containers von der normalen iterator-Klasse abzuleiten, oder mit Hilfe eines Iteratorobjekts in der reverse_iterator Klasse zu arbeiten?</p>
<p>Beim ableiten muss ich mich ja nur um ++, --, kümmern, diese entsprechend &quot;überladen&quot;? und die anderen Methoden einfach ignorieren bzw implizit die Originale(::iterator) nutzen.</p>
<p>Beim Adapter müsste ich jede Methode nochmal hinschreiben und den Aufruf für das darunter liegende iterator-Objekt tätigen, right? Dort kann ich dann einfach Inkrement und Dekrement vom Objekt vertauschen, um richtige Semantik zu erreichen und fertig.</p>
<p>Was meint ihr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562815</guid><dc:creator><![CDATA[smooth_op]]></dc:creator><pubDate>Mon, 11 Aug 2008 17:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Mon, 11 Aug 2008 17:29:04 GMT]]></title><description><![CDATA[<p>Dafür gibt es std::reverse_iterator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562819</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 11 Aug 2008 17:29:04 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Mon, 11 Aug 2008 17:39:39 GMT]]></title><description><![CDATA[<p>Wow ja, das hilft weiter.<br />
Ich geb dir die Mail von meinem Prof, erklärs dem.</p>
<p>Geht nur um die Design-Entscheidung und damit verbundenen Vor- und Nachteile.</p>
<p>*Edit<br />
Was mir noch einfällt. Beim Ableiten muss ich auch alle Methoden neu Deklarieren und Definieren, zumindest mal den ::iterator Std.Ktor aufrufen usw.<br />
Daher ist der Adapter wohl doch einfacher?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562822</guid><dc:creator><![CDATA[smooth_op]]></dc:creator><pubDate>Mon, 11 Aug 2008 17:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Mon, 11 Aug 2008 19:13:51 GMT]]></title><description><![CDATA[<p>Hi smooth_op,</p>
<p>camper will mit seiner Antwort sagen, das du eigentlich keinen eigenen reverse_iterator implementieren musst, vorausgesetzt dein Container ist entsprechend STL kompatibel <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>Poste doch mal deinen Container code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562875</guid><dc:creator><![CDATA[a_xel]]></dc:creator><pubDate>Mon, 11 Aug 2008 19:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Mon, 11 Aug 2008 19:27:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19877">@a_xel</a> nicht der container muss dafür stl-compatibel sein, sondern der iterator.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16436">@smooth_op</a> camper hat doch auch schon gesagt, welche variante er bevorzugt: den adapter. der std::reverse_iterator ist so zu implementieren. zum nachlesen c++-standard &quot;24.4.1.1 - Template class reverse_iterator&quot;</p>
<p>das bietet sich auch, da es semantisch wenig sinnvoll ist, den reverse_iterator als kindklasse des iterators zu betrachten, sondern sie stellen nur zwei verschiedene interfaces für das gleiche da.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562886</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Mon, 11 Aug 2008 19:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Tue, 12 Aug 2008 09:04:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16391">@ghorst</a>,</p>
<p>danke für die Korrektur, war wohl zu spät gestern abend <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
ich meinte natürlich den iterator</p>
<p>hier ein link, ich hoffe er hilft:</p>
<p><a href="http://www.sgi.com/tech/stl/ReverseIterator.html" rel="nofollow">http://www.sgi.com/tech/stl/ReverseIterator.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563116</guid><dc:creator><![CDATA[a_xel]]></dc:creator><pubDate>Tue, 12 Aug 2008 09:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Tue, 12 Aug 2008 15:01:58 GMT]]></title><description><![CDATA[<p>Hi zusammen!</p>
<p>Problem ist, dass die Liste vollständig unabhängig, jedoch kompatibel zur STL sein muss, was sie bisher auch ist.<br />
Daher fallen mir nur meine beiden Varianten ein, um den Code kürzer zu bekommen.<br />
Momentan stehen alle drei Iterator-Klassen untereinander in der Container-Klasse und jede einzelne Methode der Iterator-Klassen in der cpp. Da die Liste entsprechend vollständig ist, scroll ich mir mittlerweile nen Wolf.</p>
<p>Also noch ein Vorschlag, auch wenns semantsich nicht 100% sinnig erscheint, wie ghorst bemerkte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563443</guid><dc:creator><![CDATA[smooth_op]]></dc:creator><pubDate>Tue, 12 Aug 2008 15:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Tue, 12 Aug 2008 18:31:50 GMT]]></title><description><![CDATA[<p>da habe ich mich wohl missverständlich ausgedrückt. wenn du den std::reverse_iterator nicht nehmen darfst, so solltest du doch die idee des adapters benutzen und dann aus reiner faulheit einen template-adapter analog zu dem std::reverse_iterator schreiben.</p>
<p>welches ist dein dritter iterator?</p>
<p>ansonsten: wenn du den weg über einen allgemeingültigen reverse_iterator-template gehst, kannst du dessen inhalt auch aus deiner klasse auslagern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563588</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Tue, 12 Aug 2008 18:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Tue, 12 Aug 2008 18:38:30 GMT]]></title><description><![CDATA[<p>Ich sehe immer noch nicht, wo eigentlich das Problem liegt. Ich füge aber mal hinzu, dass das ganze <em>kein</em> Designproblem ist. Das Design bestimmt, wie eine bestimmte Komponente zu benutzen ist (also die Betrachtung von außen). Diese Frage wird aber bereits durch die abstrakte Beschreibung im Standard bestimmt. Hätte aber deine Implementation Einfluss auf die Benutzbarkeit, dann wäre sie fehlerhaft. Es ist mittlerweile Mode geworden, jedes kleine Problemchen als Designfrage hinzustellen. Das entleert den Begriff allerdings jeden Gehalts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563596</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 12 Aug 2008 18:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Reverse-Iterator-Klasse als Adapter, oder ableiten?? on Tue, 12 Aug 2008 21:37:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
ok, dann habe ich das Wort im falschen Kontext verwendet.<br />
Dachte man versteht auf was ich hinaus wollte. Ich danke für deinen ausführlichen Korrekturhinweis <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16391">@ghorst</a><br />
Die Iteratoren sollten schon weiterhin Klassen innerhalb der Container-Klasse sein.<br />
Also sowas:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class mylist
{
...
...
...
  class iterator {
      public:
        // Die STL Typen
        typedef typename mylist&lt;T&gt;::value_type value_type;
        typedef typename mylist&lt;T&gt;::pointer pointer;
        typedef typename mylist&lt;T&gt;::reference reference;
        typedef typename mylist&lt;T&gt;::difference_type difference_type;
        typedef std::bidirectional_iterator_tag iterator_category;
      ...
      ...
      ...
  };

  class reverse_iterator {
      ...
      ...
      ...
  };

};
</code></pre>
<p>Dein Weg wäre nicht schlecht, aber wohl zuweit von der Vorgabe.<br />
Die dritte Iterator-Klasse ist übrigens der const_iterator.<br />
Ich werde es dann wohl einfach als Adapter immplementieren und schauen, obs Nachteile bringt. Soweit ich weiss, kann ich dort dann alle Methoden im Header inline definieren und die cpp wird schlanker.<br />
Danke dir!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563680</guid><dc:creator><![CDATA[smooth_op]]></dc:creator><pubDate>Tue, 12 Aug 2008 21:37:35 GMT</pubDate></item></channel></rss>