<?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[UDT Container und Iterator]]></title><description><![CDATA[<p>Huhu Gemeinde,</p>
<p>meine Frage ist.Wie handhabt ihr das mit den Iteratoren bei euren eigenen Listklassen, oder anderen eigens geschrieben Containern? Schreibt ihr den Iterator als eigene Klasse die dann von eurer Klasse erbt oder packt ihr den Iterator mit in die Containerklasse mit rein.Was empfehlt ihr,was ist sinnvoller.Mein Design Patternbuch rät mir es als extra Klasse zu machen.Was sind eure Erfahrungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231434/udt-container-und-iterator</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 20:53:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231434.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Jan 2009 20:25:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 20:26:23 GMT]]></title><description><![CDATA[<p>Huhu Gemeinde,</p>
<p>meine Frage ist.Wie handhabt ihr das mit den Iteratoren bei euren eigenen Listklassen, oder anderen eigens geschrieben Containern? Schreibt ihr den Iterator als eigene Klasse die dann von eurer Klasse erbt oder packt ihr den Iterator mit in die Containerklasse mit rein.Was empfehlt ihr,was ist sinnvoller.Mein Design Patternbuch rät mir es als extra Klasse zu machen.Was sind eure Erfahrungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643089</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 10 Jan 2009 20:26:23 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 20:59:22 GMT]]></title><description><![CDATA[<p>Ein iterator der von der Container Klasse erbt? Ne, das macht irgendwie keinen Sinn.</p>
<p>iteratoren sind komplett eigenstaendige Klassen...</p>
<p>Iteratoren schreibt man mit Hilfe von boost am einfachsten: <a href="http://www.boost.org/doc/libs/1_37_0/libs/iterator/doc/index.html#iterator-facade-and-adaptor" rel="nofollow">http://www.boost.org/doc/libs/1_37_0/libs/iterator/doc/index.html#iterator-facade-and-adaptor</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643101</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 10 Jan 2009 20:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:05:23 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Ein iterator der von der Container Klasse erbt? Ne, das macht irgendwie keinen Sinn.</p>
<p>iteratoren sind komplett eigenstaendige Klassen...</p>
<p>Iteratoren schreibt man mit Hilfe von boost am einfachsten: <a href="http://www.boost.org/doc/libs/1_37_0/libs/iterator/doc/index.html#iterator-facade-and-adaptor" rel="nofollow">http://www.boost.org/doc/libs/1_37_0/libs/iterator/doc/index.html#iterator-facade-and-adaptor</a></p>
</blockquote>
<p>Ok, stimmt hast Recht. Was meinste mit</p>
<blockquote>
<p>iteratoren sind komplett eigenstaendige Klassen...</p>
</blockquote>
<p>?Heißt das, die Iteratorenklasse wird auch nicht in die Containerklasse integriert? Wie krieg ich es dann aber hin, das ich meinen Iterator so implementiere, das ich mit dem über meinen 'Container laufen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643103</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:16:52 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Heißt das, die Iteratorenklasse wird auch nicht in die Containerklasse integriert?</p>
</blockquote>
<p>Was verstehst du denn unter &quot;Integration&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643110</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:18:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class testcontainer
{
   class Iterator
}
</code></pre>
<p>Am Ende will ich genauso ein Konstrukt wie beim vector und allen anderen Standardcontainer bereitstellen können.</p>
<pre><code class="language-cpp">std::vector&lt;T&gt;::iterator
</code></pre>
<p>Das ist das Ziel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643111</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:18:28 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:24:20 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class testcontainer
{
   class Iterator
}
</code></pre>
<p>Am Ende will ich genauso ein Konstrukt wie beim vector und allen anderen Standardcontainer bereitstellen können.</p>
<pre><code class="language-cpp">std::vector&lt;T&gt;::iterator
</code></pre>
<p>Das ist das Ziel</p>
</blockquote>
<p>In C++ bedeutet dieser Code nur, dass iterator im Namespace vector liegt - daraus folgt keine beziehung der beiden klassen zueinander.</p>
<p>aber ja, iterator sollte innerhalb der container klasse liegen.</p>
<p>Nachtrag:<br />
Bei einer List Klasse hast du irgendwo eine Knoten-Klasse die die einzelnen Konten definiert. Der iterator muss dann natuerlich die Knoten-Klasse kennen und hat einen konstruktor wo er einen Zeiger auf einen Knoten entgegen nimmt. Die Containerklasse erstellt nun einfach ein iterator objekt mit einem Zeiger auf den jeweiligen Knoten - und schon kann der iterator bequem ueber den container iterieren.</p>
<p>dazu braucht man manchmal friends oder aehnliches, aber iterator ist und bleibt eine selbststaendige value klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643114</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:36:08 GMT]]></title><description><![CDATA[<p>Danke dir, das hilft mir weiter.Aber was meinst du damit:</p>
<blockquote>
<p>aber iterator ist und bleibt eine selbststaendige value klasse.</p>
</blockquote>
<p>Kannst du kurz erklären was du mit &quot;value Klasse&quot; meinst.Du sagtest</p>
<blockquote>
<p>Der iterator muss dann natuerlich die Knoten-Klasse kennen und hat einen konstruktor wo er einen Zeiger auf einen Knoten entgegen nimmt. Die Containerklasse erstellt nun einfach ein iterator objekt mit einem Zeiger auf den jeweiligen Knoten -und schon kann der iterator bequem ueber den container iterieren.</p>
</blockquote>
<p>Eine Knotenklasse in meiner Listklasse habe ich selbstverständlich.Wie soll aber die Iteratorklasse mit den Listknoten arbeiten? bzw wie kann ich ihn wandern lassen?Hab auf dem Gebiet Iteratoren noch nicht so viel erfahrung, bin deshalb für jeden Tip und Erklärung dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643117</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:49:12 GMT]]></title><description><![CDATA[<p>Auf jeden Fall, will ich es über eine Abstrake Klasse machen. Eine Abstrakte klasse die mir das interface bereitstellt, die heißt dann Iterator oder Const_Iterator. Und diese steht dann als basisklasse für meine Listeniteratorklasse bereit, ist die überlegung ok?Naja und dann kann ich es ja so lösen, das ich in der Listeniteratorklasse, einfach die überladene Indexeigenschaft meiner Klasse nutzen um mir somit das aktuelle Element an der i-ten stelle zurückgeben lassen.Ist das vom Grundaufbau her ok?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643121</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:51:33 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Wie soll aber die Iteratorklasse mit den Listknoten arbeiten? bzw wie kann ich ihn wandern lassen?Hab auf dem Gebiet Iteratoren noch nicht so viel erfahrung, bin deshalb für jeden Tip und Erklärung dankbar.</p>
</blockquote>
<p>Ich nehme an, die Knotenklasse besitzt Zeiger auf das nächste (evtl. auch vorherige) Element, sagen wir dem mal <code>next</code> .</p>
<p>Der Iterator zeigt auf einen Knoten. Jetzt implementierst du den <code>operator++</code> deines Iterators so, dass der Iterator anschliessend auf den nächsten Knoten zeigt, also den <code>next</code> -Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643122</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:51:33 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:54:26 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Danke dir, das hilft mir weiter.Aber was meinst du damit:</p>
<blockquote>
<p>aber iterator ist und bleibt eine selbststaendige value klasse.</p>
</blockquote>
<p>Kannst du kurz erklären was du mit &quot;value Klasse&quot; meinst.</p>
</blockquote>
<p>Unwichtig.<br />
iteratoren sind einfach Klassen (zufaelligerweise in C++ value klassen - da sie die selbe (kopier) semantik haben wie zB int oder char).</p>
<blockquote>
<p>Eine Knotenklasse in meiner Listklasse habe ich selbstverständlich.Wie soll aber die Iteratorklasse mit den Listknoten arbeiten? bzw wie kann ich ihn wandern lassen?Hab auf dem Gebiet Iteratoren noch nicht so viel erfahrung, bin deshalb für jeden Tip und Erklärung dankbar.</p>
</blockquote>
<p>Eine einfache Loesung waere es, den iterator als friend der Containerklasse zu nehmen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class List {
private:
  struct Node {
    Node* next;
    T value;
  };

  friend class iterator;
public:
  class iterator {
  private:
    Node* p;
  public:
    iterator(Node* p) : p(p)
    {}
    iterator&amp; operator++() {
      p=p-&gt;next;
      return *this;
    }
  };
};
</code></pre>
<p>Das waere ein simple variante. Besser waere natuerlich boost - aber vielleicht waere es ganz gut wenn du iteratoren mal auf diese (umstaendliche) art implementierst - da lernst du vermutlich am meisten dabei.</p>
<p>Mein Problem ist jetzt nur: ich weiss nicht genau wo du ein Problem hast - versuch mal einen ansatz den du am besten findest zu implementieren und dann hier zu zeigen oder aber genau zu erklaeren. uU koennen wir so schneller feststellen wo du deinen gedankenfehler hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643125</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:54:26 GMT</pubDate></item><item><title><![CDATA[Reply to UDT Container und Iterator on Sat, 10 Jan 2009 21:58:36 GMT]]></title><description><![CDATA[<p>@ Nexus: Ganz genau, hast du richtig erkannt, deine Antwort, hatte ich schon so leicht im Hinterkopf.<br />
@Shade Of Mine: Danke auch an dich, haste super erklärt, das hat mir einiges einfacher gemacht. Ich hatte schon so einen Ansatz im Kopf war mir aber einfach nicht sicher, ob es wirklich &quot;so einfach&quot; geht. Anscheind denk ich nicht immer am Zeil vorbei :p<br />
Ich werde das mal bis morgen versuchen ordentlich zu implementieren und dann könnt ihr mich hier auseiandernehmen :p<br />
Danke an alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643130</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 10 Jan 2009 21:58:36 GMT</pubDate></item></channel></rss>