<?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[Problem(e) mit Iteratoren - zählt er korrekt?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mittlerweile mit den Nerven am Ende. -.-<br />
Derzeit sitze ich seit 20 Stunden an einer kleinen Aufgabe fürs Studium und bräuchte mal etwas Hilfe.</p>
<p>Aufgabenstellung ist die List (STL) teilweise nachzuprogrammieren.</p>
<p>Mein Problem: Ich möchte über einen Iterator in die Liste an einem bestimmten Punkt ein Element (Datentyp mittels Template variabel) einfügen.</p>
<p>Wenn ich eine List anlege fällt mir auf, dass die Werte sich um 0x20 größer werden, wenn ich die eigens erstelle pushback-Fktn aufrufe. Soweit so gut, hier entsprechen die Einträge im Speicher meinen Erwartungen und es kommt zu einen Problemen.</p>
<p>Beim Iterator sieht die Sache dagegen anders aus. Ich lege also einen Iterator anhand der Liste an, in die ich zuvor ein paar doubles &quot;gepushbackt&quot; habe.</p>
<p>Nun inkrementiere ich den Iterator und er zählt aus mir nicht erkennbaren Gründen in einer ganz anderen &quot;Größe&quot; hoch.<br />
Diese Illustration verdeutlicht mein Problem:<br />
<a href="https://dl.dropboxusercontent.com/u/28089422/Untitled.png" rel="nofollow">https://dl.dropboxusercontent.com/u/28089422/Untitled.png</a></p>
<p>Wie gesagt, derzeit habe ich mehrere Tage schon an dem Problem verbracht und komme auf keinen Lösungsansatz.</p>
<p>**Wäre super nett, wenn mir jemand helfen kann und mir einen Denkanstoß gibt.<br />
**<br />
Hier noch ein paar Zeilen aus meinem Code:</p>
<p>main.cpp</p>
<pre><code>double a(1), b(2), c(3), d(4), e(5), f(6);

    test_List.push_back(a);
    test_List.push_back(b);
    test_List.push_back(c);
    test_List.push_back(d);
    test_List.push_back(e);
    test_List.push_back(f);

    myList&lt;double&gt;::myIterator p = test_List.begin();
    ++p;
    ++p;
    ++p;

    myList&lt;double&gt;::myIterator q = p;
    ++q;

    test_List.insert(p, 999.99);
</code></pre>
<p>myList.h</p>
<pre><code>myIterator&amp; operator++() {
            ++curr;
            return *this;
        }
</code></pre>
<pre><code>myNode&lt;Elem&gt;* getCurrent() const {
            return curr;
        }
</code></pre>
<p>myList.cpp</p>
<pre><code>template&lt;class Elem&gt;
typename myList&lt;Elem&gt;::myIterator myList&lt;Elem&gt;::insert
(myIterator iter, const Elem&amp; args)
{

    myList&lt;Elem&gt;::myIterator walkthrough(first);

    while (iter != walkthrough) {
        ++(walkthrough);
    }

    myNode&lt;Elem&gt;* newInsNote = new myNode&lt;Elem&gt;;

    newInsNote = iter.getCurrent();
    //newInsNote = walkthrough; // Geht natuerlich auch nicht -.- ARGGG!!!
    //newInsNote-&gt;pre = newInsNote-&gt;pre-&gt;pre;
    //newInsNote-&gt;suc = newInsNote-&gt;pre-&gt;suc; // trauiger Manipulations-Versuch
    myNode&lt;Elem&gt;* newInsNote_sec = new myNode&lt;Elem&gt;;
    newInsNote_sec-&gt;val = args;

    ins(newInsNote, newInsNote_sec);

    return iter;
}
</code></pre>
<pre><code>template&lt;class Elem&gt;
void myList&lt;Elem&gt;::ins(myNode&lt;Elem&gt;* p, myNode&lt;Elem&gt;* v) // neuen Knoten (v) hinter p einfuegen
{
    /*... pruefe...*/
    if (v != 0) {
        v-&gt;pre = p;
        v-&gt;suc = p-&gt;suc;
        p-&gt;suc-&gt;pre = v;
        p-&gt;suc = v;
    }
    else return;
}
</code></pre>
<p>Insgesamt bleibt zu sagen, dass ich mit den Iteratoren absolut überfordert bin und auch nicht im Geringsten einen Sinn erkenne ebendiese zu nutzen.</p>
<p>Vielen Dank vorab!<br />
Beste Grüße</p>
<p>Kleine Frage am Rand:<br />
gibt es in Netbeans irgendwie die Möglichkeit zu verhindern, dass bei der Speicheransicht im Debugger das &quot;OUT OF SCOPE&quot; verhindert wird? Ich finde es extrem nervig, dass die Werte einfach verschwinden, wenn man den Scope verlässt. Ich suche irgendwas wie eine &quot;Screenshot-Funktion&quot; o.ä. (ist so ein Punkt, der mich nach dem fünften versehentlichen &quot;Einmal zu viel Klicken&quot; an Rand des nervlichen Wahnsinn treibt.) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325379/problem-e-mit-iteratoren-zählt-er-korrekt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 18:48:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325379.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Apr 2014 21:59:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem(e) mit Iteratoren - zählt er korrekt? on Mon, 28 Apr 2014 22:31:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mittlerweile mit den Nerven am Ende. -.-<br />
Derzeit sitze ich seit 20 Stunden an einer kleinen Aufgabe fürs Studium und bräuchte mal etwas Hilfe.</p>
<p>Aufgabenstellung ist die List (STL) teilweise nachzuprogrammieren.</p>
<p>Mein Problem: Ich möchte über einen Iterator in die Liste an einem bestimmten Punkt ein Element (Datentyp mittels Template variabel) einfügen.</p>
<p>Wenn ich eine List anlege fällt mir auf, dass die Werte sich um 0x20 größer werden, wenn ich die eigens erstelle pushback-Fktn aufrufe. Soweit so gut, hier entsprechen die Einträge im Speicher meinen Erwartungen und es kommt zu einen Problemen.</p>
<p>Beim Iterator sieht die Sache dagegen anders aus. Ich lege also einen Iterator anhand der Liste an, in die ich zuvor ein paar doubles &quot;gepushbackt&quot; habe.</p>
<p>Nun inkrementiere ich den Iterator und er zählt aus mir nicht erkennbaren Gründen in einer ganz anderen &quot;Größe&quot; hoch.<br />
Diese Illustration verdeutlicht mein Problem:<br />
<a href="https://dl.dropboxusercontent.com/u/28089422/Untitled.png" rel="nofollow">https://dl.dropboxusercontent.com/u/28089422/Untitled.png</a></p>
<p>Wie gesagt, derzeit habe ich mehrere Tage schon an dem Problem verbracht und komme auf keinen Lösungsansatz.</p>
<p>**Wäre super nett, wenn mir jemand helfen kann und mir einen Denkanstoß gibt.<br />
**<br />
Hier noch ein paar Zeilen aus meinem Code:</p>
<p>main.cpp</p>
<pre><code>double a(1), b(2), c(3), d(4), e(5), f(6);

    test_List.push_back(a);
    test_List.push_back(b);
    test_List.push_back(c);
    test_List.push_back(d);
    test_List.push_back(e);
    test_List.push_back(f);

    myList&lt;double&gt;::myIterator p = test_List.begin();
    ++p;
    ++p;
    ++p;

    myList&lt;double&gt;::myIterator q = p;
    ++q;

    test_List.insert(p, 999.99);
</code></pre>
<p>myList.h</p>
<pre><code>myIterator&amp; operator++() {
            ++curr;
            return *this;
        }
</code></pre>
<pre><code>myNode&lt;Elem&gt;* getCurrent() const {
            return curr;
        }
</code></pre>
<p>myList.cpp</p>
<pre><code>template&lt;class Elem&gt;
typename myList&lt;Elem&gt;::myIterator myList&lt;Elem&gt;::insert
(myIterator iter, const Elem&amp; args)
{

    myList&lt;Elem&gt;::myIterator walkthrough(first);

    while (iter != walkthrough) {
        ++(walkthrough);
    }

    myNode&lt;Elem&gt;* newInsNote = new myNode&lt;Elem&gt;;

    newInsNote = iter.getCurrent();
    //newInsNote = walkthrough; // Geht natuerlich auch nicht -.- ARGGG!!!
    //newInsNote-&gt;pre = newInsNote-&gt;pre-&gt;pre;
    //newInsNote-&gt;suc = newInsNote-&gt;pre-&gt;suc; // trauiger Manipulations-Versuch
    myNode&lt;Elem&gt;* newInsNote_sec = new myNode&lt;Elem&gt;;
    newInsNote_sec-&gt;val = args;

    ins(newInsNote, newInsNote_sec);

    return iter;
}
</code></pre>
<pre><code>template&lt;class Elem&gt;
void myList&lt;Elem&gt;::ins(myNode&lt;Elem&gt;* p, myNode&lt;Elem&gt;* v) // neuen Knoten (v) hinter p einfuegen
{
    /*... pruefe...*/
    if (v != 0) {
        v-&gt;pre = p;
        v-&gt;suc = p-&gt;suc;
        p-&gt;suc-&gt;pre = v;
        p-&gt;suc = v;
    }
    else return;
}
</code></pre>
<p>Insgesamt bleibt zu sagen, dass ich mit den Iteratoren absolut überfordert bin und auch nicht im Geringsten einen Sinn erkenne ebendiese zu nutzen.</p>
<p>Vielen Dank vorab!<br />
Beste Grüße</p>
<p>Kleine Frage am Rand:<br />
gibt es in Netbeans irgendwie die Möglichkeit zu verhindern, dass bei der Speicheransicht im Debugger das &quot;OUT OF SCOPE&quot; verhindert wird? Ich finde es extrem nervig, dass die Werte einfach verschwinden, wenn man den Scope verlässt. Ich suche irgendwas wie eine &quot;Screenshot-Funktion&quot; o.ä. (ist so ein Punkt, der mich nach dem fünften versehentlichen &quot;Einmal zu viel Klicken&quot; an Rand des nervlichen Wahnsinn treibt.) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396715</guid><dc:creator><![CDATA[martini3k1]]></dc:creator><pubDate>Mon, 28 Apr 2014 22:31:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem(e) mit Iteratoren - zählt er korrekt? on Mon, 28 Apr 2014 23:10:18 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/u109509" rel="nofollow">SeppJ</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f10" rel="nofollow">C (C89, C99 und C11)</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (auch C++0x und C++11)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396719</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 28 Apr 2014 23:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem(e) mit Iteratoren - zählt er korrekt? on Tue, 29 Apr 2014 00:23:35 GMT]]></title><description><![CDATA[<p>Mehr Code. <strong>Vollständiges</strong> <strong>Minimal</strong>beispiel:<br />
<a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">http://www.c-plusplus.net/forum/304133</a></p>
<p>Was ist denn curr? Ein Zeiger? Das wäre doch sehr komisch, bei einem Listeniterator Zeigerarithmetik zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396722</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 29 Apr 2014 00:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem(e) mit Iteratoren - zählt er korrekt? on Tue, 29 Apr 2014 04:13:59 GMT]]></title><description><![CDATA[<p>Krass <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
dein Denkanstoß mit dem Zeiger / Iterator war echt Gold wert!</p>
<pre><code>myIterator&amp; operator++() {
            curr = curr-&gt;suc;
            return *this;
        }
</code></pre>
<p>So sieht das doch schon besser aus. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p><a href="https://dl.dropboxusercontent.com/u/28089422/Untitled2.png" rel="nofollow">https://dl.dropboxusercontent.com/u/28089422/Untitled2.png</a></p>
<p>Vielen, vielen, lieben Dank!! Ich habe glaube ich noch nie eine so &quot;zielgerichtete Fragestellung&quot; aufgeworfen bekommen.</p>
<p>Wenn du noch einen Tipp hast, wie man sich so Zusammenhänge dauerhaft behalten kann bzw. zielsicher erkennen kann, lass es mich bitte wissen. Ich programmiere erst seit knapp einem Jahr und glaube für solche Sachen fehlt mir an manchen Stellen der Überblick über die Gesamtheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396731</guid><dc:creator><![CDATA[martini3k1]]></dc:creator><pubDate>Tue, 29 Apr 2014 04:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem(e) mit Iteratoren - zählt er korrekt? on Tue, 29 Apr 2014 06:26:34 GMT]]></title><description><![CDATA[<p>martini3k1 schrieb:</p>
<blockquote>
<p>Wenn du noch einen Tipp hast, wie man sich so Zusammenhänge dauerhaft behalten kann bzw. zielsicher erkennen kann, lass es mich bitte wissen. Ich programmiere erst seit knapp einem Jahr und glaube für solche Sachen fehlt mir an manchen Stellen der Überblick über die Gesamtheit.</p>
</blockquote>
<p>Das war jetzt einfach Erfahrung meinerseits, die kann man leider noch nicht auf die einfache Art und Weise erlangen.</p>
<p>Aber Fehler dieser Art kann man allgemein sehr gut mit einem Debugger finden. Du hast ja bereits einen benutzt und gute Hinweise gefunden. Wenn man versucht, die Fehlerursache im Code möglichst gut einzugrenzen (Einzelschritt: Wann beginnt der Programmzustand von den Erwartungen abzuweichen?), dann findet man oft die Ursache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396734</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 29 Apr 2014 06:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem(e) mit Iteratoren - zählt er korrekt? on Tue, 29 Apr 2014 07:08:47 GMT]]></title><description><![CDATA[<p>Okay, ja, so war auch meine Vorgehensweise, bin aber immer noch baff, dass du das so schnell auf Anhieb gesehen hast. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Nochmals Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396737</guid><dc:creator><![CDATA[martini3k1]]></dc:creator><pubDate>Tue, 29 Apr 2014 07:08:47 GMT</pubDate></item></channel></rss>