<?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[[GELÖST] Iterator zu Integer?]]></title><description><![CDATA[<p>Morgen,</p>
<p>ich bin gerade dabei, mich näher mit Vektoren auseinaderzusetzen. Dabei bin ich auf folgendes Problem gestoßen:</p>
<p>deklariert und definiert sind diese drei Variablen:</p>
<pre><code class="language-cpp">std::vector&lt;Panel_Button&gt; button_;
std::vector&lt;Panel_Button&gt;::iterator buttonIt_;

int activeButton_;
</code></pre>
<p>Im Laufe des Programms soll im Rahmen eines Mouseover-Events die der ausgewählte Button in der Integer-Variable gespeichert werden.<br />
Hierzu soll folgender Ansatz genutzt werden:</p>
<pre><code class="language-cpp">mouseX_ = event.motion.x;
mouseY_ = event.motion.y;
for (   buttonIt_  = button_.begin();
        buttonIt_ != button_.end();
        ++buttonIt_ )                
{
    if ( button_[buttonIt_].getCollision(mouseX_,mouseY_) )// Falscher Datentyp
    {
        activeButton_ = buttonIt_;   // Falscher Datentyp
    }
}
</code></pre>
<p>An den Stellen, die hier mit &quot;Falscher Datentyp&quot; definiert sind, muss natürlich ein Integer hin, aber gibt es überhaupt eine Möglichkeit, aus einem Iterator den dazugehörigen Integer-Wert herauszubekommen? Wenn ja: wie?</p>
<p>Danke im Voraus,</p>
<p>Ki</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291370/gelöst-iterator-zu-integer</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 19:35:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291370.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Aug 2011 15:48:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 20:08:01 GMT]]></title><description><![CDATA[<p>Morgen,</p>
<p>ich bin gerade dabei, mich näher mit Vektoren auseinaderzusetzen. Dabei bin ich auf folgendes Problem gestoßen:</p>
<p>deklariert und definiert sind diese drei Variablen:</p>
<pre><code class="language-cpp">std::vector&lt;Panel_Button&gt; button_;
std::vector&lt;Panel_Button&gt;::iterator buttonIt_;

int activeButton_;
</code></pre>
<p>Im Laufe des Programms soll im Rahmen eines Mouseover-Events die der ausgewählte Button in der Integer-Variable gespeichert werden.<br />
Hierzu soll folgender Ansatz genutzt werden:</p>
<pre><code class="language-cpp">mouseX_ = event.motion.x;
mouseY_ = event.motion.y;
for (   buttonIt_  = button_.begin();
        buttonIt_ != button_.end();
        ++buttonIt_ )                
{
    if ( button_[buttonIt_].getCollision(mouseX_,mouseY_) )// Falscher Datentyp
    {
        activeButton_ = buttonIt_;   // Falscher Datentyp
    }
}
</code></pre>
<p>An den Stellen, die hier mit &quot;Falscher Datentyp&quot; definiert sind, muss natürlich ein Integer hin, aber gibt es überhaupt eine Möglichkeit, aus einem Iterator den dazugehörigen Integer-Wert herauszubekommen? Wenn ja: wie?</p>
<p>Danke im Voraus,</p>
<p>Ki</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106858</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 20:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 15:52:28 GMT]]></title><description><![CDATA[<p>std::distance(button_.begin(), buttonIt_);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106860</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 16 Aug 2011 15:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 15:54:23 GMT]]></title><description><![CDATA[<p>nein gibt es so nicht. du benutzt iteratoren auch falsch<br />
du hast die array schreibweise im kopf deshalb greifst du per index operator auf den vector mit einem iterator zu (zeile 7)</p>
<p>iteratoren sind wie zeiger, die über deinen container laufen. mit den einfachsten kannst du nur per einzelschritt von vorne nach hinten laufen(forward iterator), die besseren können auch zurück laufen(bidirectionaler iteratore) und die &quot;besten&quot; können sogar addiert werden und auf jede beliebige position ohne probleme zugreifen(random access iterator)</p>
<p>wenn du dir den index in deinem vector speichern willst musst du entweder manuell mitzählen oder sowas inder richtung machen:</p>
<pre><code class="language-cpp">std::vector&lt;Button&gt; vec;
// ... vector füllen und machen und tun

std::vector&lt;Button&gt;::iterator it = /* ... */;

int position = it - vec.begin();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2106861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106861</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 16 Aug 2011 15:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 15:56:59 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>std::distance(button_.begin(), buttonIt_);</p>
</blockquote>
<p>Danke, das ist es. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2106862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106862</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 15:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 16:28:41 GMT]]></title><description><![CDATA[<p>Wobei Sky's Lösun bei std::vector besser wäre. O(1).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106875</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 16 Aug 2011 16:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 16:33:44 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wobei Sky's Lösun bei std::vector besser wäre. O(1).</p>
</blockquote>
<p>std::distance() läuft auf Random Access Iteratoren auch in O(1).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106877</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 16 Aug 2011 16:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 16:52:24 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wobei Sky's Lösun bei std::vector besser wäre. O(1).</p>
</blockquote>
<p>std::distance() läuft auf Random Access Iteratoren auch in O(1).</p>
</blockquote>
<p>Stimmt, TMP ftw <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2106880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106880</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 16 Aug 2011 16:52:24 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 17:11:57 GMT]]></title><description><![CDATA[<p>Beides funktioniert in meinem Fall (danke also auch an Skym0sh0), aber wenn ich button_.begin() mehrmals abrufen will, crasht das Programm auf die ein oder andere Weise (Speicherfehler, Einfrieren, ...)</p>
<p>Weiß jemand Abhilfe?</p>
<p>EDIT:</p>
<blockquote>
<p>corrupted double-linked list</p>
</blockquote>
<p>und Einfrieren sind die häufigsten Fälle.</p>
<p>Ich Ent-[GELÖST]-e mal. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>EDIT2:</p>
<p>Fehler treten scheinbar dann auf, wenn ich eine Integer-Klassenvariable auf diese Art und Weise erstelle und dann in der Laufzeit button.begin() abrufe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106881</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 17:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 17:14:52 GMT]]></title><description><![CDATA[<p>Guck mal in die Doku Deines Compilers / Standardbibliotheks-Providers nach, was der/die alles so an Debug-Möglichkeiten hergibt. Sofern man nicht auf unterster Abstraktionsebene programmiert (roher Speicher, Zeigerfrickeleien), kann man so sehr viele Fehler abfangen. Ich meine jetzt nicht nur einen Debug-Modus des Compilers, sondern auch einen Debug-Modus der Standardbibliothek mit &quot;checked iterators&quot; etc.</p>
<p>Und sonst musst Du Dein Programm selbst stark vereinfachen und versuchen den Fehler zu isolieren.</p>
<p>Bist Du Dir ganz sicher, dass Du nicht vielleicht die Underschiede zwischen C++ und einer dir besser vertrauten Sprache unterschätzt? Das geht nämlich vielen Anfängern so...</p>
<p>Für weitere Tipps fehlt da jetzt der Kontext. Im Code sehe ich zB nirgends eine Liste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106885</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 16 Aug 2011 17:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 17:41:32 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Bist Du Dir ganz sicher, dass Du nicht vielleicht die Underschiede zwischen C++ und einer dir besser vertrauten Sprache unterschätzt? Das geht nämlich vielen Anfängern so...</p>
</blockquote>
<p>Ich versuche ja, die Probleme zu lösen, um die Sprache besser zu verstehen. Speicherverwaltung bereitet mir noch große Schwierigkeiten.</p>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Für weitere Tipps fehlt da jetzt der Kontext. Im Code sehe ich zB nirgends eine Liste.</p>
</blockquote>
<p>Ich bin nicht ganz sicher, welche Informationen im Kontext noch gebraucht werden, ich wollte die Informationen möglichst auf das Wesentliche beschränken.</p>
<p>Mal ein Überlick der Umgebung:</p>
<p>Das Problem befindet sich in der Methode bool Scene::config( SDL_Event event ). Diese wird in einem While-Loop von der main-Funktion aus aufgerufen.</p>
<p>Die Funktion beginnt mit einem</p>
<pre><code class="language-cpp">if (!texLoaded_)
{
    //CODE

    texLoaded_ = true;
}
</code></pre>
<p>texLoaded_ ist eine bool-Variable. In diesem Codeteil werden Laufzeit-Variablen definiert, darunter auch die Buttons und die Klassenvariable bNo_, die die Anzahl an Buttons enthält.</p>
<pre><code class="language-cpp">bNo_            = std::distance(button_.begin(), buttonIt_);
</code></pre>
<p>im Laufe dieser Funktion gibt es außerdem 2 for-Schleifen, in denen ebenfalls</p>
<pre><code class="language-cpp">int i = std::distance(button_.begin(), buttonIt_)
</code></pre>
<p>aufgerufen wird. i ist also nur von kurzer Lebensdauer.</p>
<p>Kommentiere ich diese Funktion in den for-loops aus, crasht das Programm nicht und ersetze ich die Definition von bNo_ durch</p>
<pre><code class="language-cpp">bNo_            = 0;
</code></pre>
<p>kommt es ebenfalls zu keinen Crashs.</p>
<p>Falls sonst noch etwas notwendig ist, bitte fragen.</p>
<p>EDIT:<br />
Button_Panel ist eine simple selbstgeschriebene Klasse, die ein simples Quad darstellt, das mit OpenGL gerendert werden kann und ein paar bools und Funktionen a là selected_ und getCollision() enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106889</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 17:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 17:38:12 GMT]]></title><description><![CDATA[<p>&quot;Kontext&quot; heißt nicht, die einzelnen Fragmente auseinanderzureißen und getrennt zu zeigen. Wir können dir besser helfen, wenn wir den Code am Stück sehen können. Also schmeiß alles aus der Funktion raus, was für das Problem unwichtig ist (wenn der Fehler dabei verschwindet, hast du die richtige Stelle gefunden) und poste dann mal die gesamte Funktion.</p>
<p>PS: Wurde der Iterator eigentlich initialisiert, bevor du bNo_ berechnet hast? Wenn ja, zeigt er in den selben Container?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106892</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 16 Aug 2011 17:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 17:54:57 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>&quot;Kontext&quot; heißt nicht, die einzelnen Fragmente auseinanderzureißen und getrennt zu zeigen. Wir können dir besser helfen, wenn wir den Code am Stück sehen können. Also schmeiß alles aus der Funktion raus, was für das Problem unwichtig ist (wenn der Fehler dabei verschwindet, hast du die richtige Stelle gefunden) und poste dann mal die gesamte Funktion.</p>
</blockquote>
<pre><code class="language-cpp">bool Scene::config( SDL_Event event )
{
    if (!texLoaded_)
    {
        //TEXTURES

        //TEXT

        //BUTTONS
        int bNo = 0;
        button_.clear();
        Panel_Button tempbutton1(++bNo,360,360,110,32); // Abbrechen
        button_.push_back(tempbutton1);  
        Panel_Button tempbutton2(++bNo,490,360,105,32);         // Speichern TODO
        button_.push_back(tempbutton2);  

        buttonIt_       = button_.end();
        bNo_            = std::distance(button_.begin(), buttonIt_);//&lt;-----
        activeButton_   = 0;

        //MUSIC

        //SOUNDS

        //RUNTIME VARIABLES
        index_          = 0;
        counter_        = 0;
        events_         = true;
        activeButton_   = 0;

        //COMMANDS

        texLoaded_ = true;
        std::cout &lt;&lt; &quot;Scene Configuration Created!&quot; &lt;&lt; std::endl;

    }

    //-------
    //-EVENTS
    //-------
    if ( events_ == true )
    {
        while ( SDL_PollEvent(&amp;event) )
        {
            switch(event.type)
            {
                case SDL_QUIT:
                    index_ = -1;
                    std::cout &lt;&lt; &quot;Closing Programm!&quot; &lt;&lt; std::endl;
                    break;

                case SDL_MOUSEMOTION:
                    mouseX_ = event.motion.x;
                    mouseY_ = event.motion.y;
                    for (   buttonIt_  = button_.begin();
                            buttonIt_ &lt;= button_.end();
                            ++buttonIt_ )
                    {
                        // Umwandeln Iterator -&gt; Integer
                        int i = std::distance(button_.begin(), buttonIt_); //&lt;-----

                        if ( button_[i].getCollision(mouseX_,mouseY_) )
                        {
                            activeButton_ = i;
                        }
                    }
                    break;//TODO

                case SDL_KEYDOWN:
                    // Diverse Keys
                    break;

                        default:
                            break;
                    }
                    break;

            }
        }
    }

    std::cout &lt;&lt; &quot;Events passed&quot; &lt;&lt; std::endl;

    //-------
    //-LOGIC-
    //-------
    switch( index_ )
    {
        //--0//
        case 0:
            if ( fg_.fadeOut(1) )   // Fade in Forground
            {
                index_++;
            }
            break;

        //--1//
        case 1:
            break;

        //END//
        default:
            // Programm schließen

    }

    // Set active Button

    for (   buttonIt_  = button_.begin();
            buttonIt_ &lt;= button_.end();
            ++buttonIt_ )
    {
        int i = std::distance(button_.begin(), buttonIt_); //&lt;-----
        button_[i].setSelected(false);
    }
    button_[activeButton_].setSelected(true);

    std::cout &lt;&lt; &quot;Logic passed&quot; &lt;&lt; std::endl;

    //-------
    //-RENDER
    //-------
    renderBegin(WINDOW_WIDTH, WINDOW_HEIGHT);

    std::cout &lt;&lt; &quot;Render Begin passed&quot; &lt;&lt; std::endl;

    //BG
    bg_.draw();

    //TEXT
    //Speichern/Abbrechen
    if ( button_[bNo_].getSelected() )
    {
        text_.renderGL(&quot;Speichern&quot;,490,360,100,0,0,200);
    } else {
        text_.renderGL(&quot;Speichern&quot;,490,360,5,0,0,200);
    }
    if ( button_[bNo_ - 1].getSelected() )
    {
        text_.renderGL(&quot;Abbrechen&quot;,360,360,100,0,0,200);
    } else {
        text_.renderGL(&quot;Abbrechen&quot;,360,360,5,0,0,200);
    }

    //Überschrift
    text_.setSize(30);
    text_.renderGL(&quot;Einstellungen&quot;,20,128,5,0,0,200,&quot;bold&quot;);

    //FG

    //Render-Ausklang
    glPopMatrix();                      // stop  rendering phase

    SDL_GL_SwapBuffers();               // Render

    std::cout &lt;&lt; &quot;Render passed&quot; &lt;&lt; std::endl;

    return true;
}
</code></pre>
<p>CStoll schrieb:</p>
<blockquote>
<p>PS: Wurde der Iterator eigentlich initialisiert, bevor du bNo_ berechnet hast? Wenn ja, zeigt er in den selben Container?</p>
</blockquote>
<p>Er ist in der scene.h initialisiert.<br />
Erstmals genutzt wird er vor der Berechnung.</p>
<pre><code class="language-cpp">buttonIt_       = button_.end();
bNo_            = std::distance(button_.begin(), buttonIt_);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2106896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106896</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 17:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 18:09:12 GMT]]></title><description><![CDATA[<p>Nach dreimal durchlesen habe ich endlich das Problem lokalisiert (hoffe ich):</p>
<pre><code class="language-cpp">buttonIt_       = button_.end();
bNo_            = std::distance(button_.begin(), buttonIt_);
//aka bNo_ = button_.size()
...
if(button_[bNo_].getSelected())
  ...
</code></pre>
<p>bNo_ ist der Index von end() und der zeigt hinter das letzte Vector&lt;&gt;-Element. Damit liest du über das Ende deiner Nutzdaten hinaus.</p>
<p>btw, dir ist schon klar, daß du die Iteratoren auch direkt nutzen kannst, ohne sie unbedingt in Indizes umrechnen zu müssen?<br />
z.B.:</p>
<pre><code class="language-cpp">for (   buttonIt_  = button_.begin();
            buttonIt_ &lt;= button_.end();
            ++buttonIt_ )
    {
        int i = std::distance(button_.begin(), buttonIt_); //&lt;-----
        button_[i].setSelected(false);
    }

// ==&gt;

    for (   buttonIt_  = button_.begin();
            buttonIt_ &lt;= button_.end();
            ++buttonIt_ )
    {
        buttonIt_-&gt;setSelected(false);
    }
</code></pre>
<p>(und anstelle von end()-begin() (bzw. distance(begin(),end())) kannst du auch size() verwenden, um die Elementzahl zu bestimmen)</p>
<p>PS: Wenn du die Iteratoren nur lokal benötigst, solltest du sie auch nicht als global verfügbare Variablen mit herumschleppen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106905</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 16 Aug 2011 18:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 19:37:13 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Nach dreimal durchlesen habe ich endlich das Problem lokalisiert (hoffe ich):</p>
<pre><code class="language-cpp">buttonIt_       = button_.end();
bNo_            = std::distance(button_.begin(), buttonIt_);
//aka bNo_ = button_.size()
...
if(button_[bNo_].getSelected())
  ...
</code></pre>
<p>bNo_ ist der Index von end() und der zeigt hinter das letzte Vector&lt;&gt;-Element. Damit liest du über das Ende deiner Nutzdaten hinaus.</p>
</blockquote>
<pre><code class="language-cpp">bNo_ = button_.size();
</code></pre>
<p>macht es leider nicht besser. Das Programm verhält sich nicht anders.</p>
<p>Im Fall, dass es einfriert, wird die Funktion ein paar mal ausgeführt und stoppt zwischen</p>
<pre><code class="language-cpp">std::cout &lt;&lt; &quot;Render Begin passed&quot; &lt;&lt; std::endl;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">std::cout &lt;&lt; &quot;Render passed&quot; &lt;&lt; std::endl;
</code></pre>
<p>CStoll schrieb:</p>
<blockquote>
<p>btw, dir ist schon klar, daß du die Iteratoren auch direkt nutzen kannst, ohne sie unbedingt in Indizes umrechnen zu müssen?<br />
z.B.:</p>
<pre><code class="language-cpp">for (   buttonIt_  = button_.begin();
            buttonIt_ &lt;= button_.end();
            ++buttonIt_ )
    {
        int i = std::distance(button_.begin(), buttonIt_); //&lt;-----
        button_[i].setSelected(false);
    }

// ==&gt;

    for (   buttonIt_  = button_.begin();
            buttonIt_ &lt;= button_.end();
            ++buttonIt_ )
    {
        buttonIt_-&gt;setSelected(false);
    }
</code></pre>
</blockquote>
<p>Danke, diese Schreibweise ist wirklich komfortabler, habe gar nicht daran gedacht. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2106958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106958</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 19:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 19:45:03 GMT]]></title><description><![CDATA[<p>Ki schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Nach dreimal durchlesen habe ich endlich das Problem lokalisiert (hoffe ich):</p>
<pre><code class="language-cpp">buttonIt_       = button_.end();
bNo_            = std::distance(button_.begin(), buttonIt_);
//aka bNo_ = button_.size()
...
if(button_[bNo_].getSelected())
  ...
</code></pre>
<p>bNo_ ist der Index von end() und der zeigt hinter das letzte Vector&lt;&gt;-Element. Damit liest du über das Ende deiner Nutzdaten hinaus.</p>
</blockquote>
<pre><code class="language-cpp">bNo_ = button_.size();
</code></pre>
<p>macht es leider nicht besser. Das Programm verhält sich nicht anders.</p>
</blockquote>
<p>Der Wert ist ja der selbe. In einem Array oder vector&lt;&gt; mit <code>size</code> Elementen kannst du die Elemente <code>a[0]</code> bis <code>a[size-1]</code> verwenden, der Zugriff auf <code>a[size]</code> ist undefiniert - und genau das machst du dort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106969</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 16 Aug 2011 19:45:03 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 20:03:13 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Ki schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Nach dreimal durchlesen habe ich endlich das Problem lokalisiert (hoffe ich):</p>
<pre><code class="language-cpp">buttonIt_       = button_.end();
bNo_            = std::distance(button_.begin(), buttonIt_);
//aka bNo_ = button_.size()
...
if(button_[bNo_].getSelected())
  ...
</code></pre>
<p>bNo_ ist der Index von end() und der zeigt hinter das letzte Vector&lt;&gt;-Element. Damit liest du über das Ende deiner Nutzdaten hinaus.</p>
</blockquote>
<pre><code class="language-cpp">bNo_ = button_.size();
</code></pre>
<p>macht es leider nicht besser. Das Programm verhält sich nicht anders.</p>
</blockquote>
<p>Der Wert ist ja der selbe. In einem Array oder vector&lt;&gt; mit <code>size</code> Elementen kannst du die Elemente <code>a[0]</code> bis <code>a[size-1]</code> verwenden, der Zugriff auf <code>a[size]</code> ist undefiniert - und genau das machst du dort.</p>
</blockquote>
<p>Ahhhh, verstehe. <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="😃"
    /></p>
<p>Danke für die Erklärung, ich hätte mir vielleicht mal den Integer ausgeben lassen sollen. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106976</guid><dc:creator><![CDATA[Ki]]></dc:creator><pubDate>Tue, 16 Aug 2011 20:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to [GELÖST] Iterator zu Integer? on Tue, 16 Aug 2011 20:18:54 GMT]]></title><description><![CDATA[<p>Ich möchte nochmal an diverse Debug-Modi erinnern, die das sofort aufgedeckt hätten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106985</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 16 Aug 2011 20:18:54 GMT</pubDate></item></channel></rss>