<?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[Wozu iteratoren hernehmen, wenn es andere alternativen gibt ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese mir zur zeit ein tutorial zum thema iteratoren durch. das prinzip verstehe ich soweit, und ich habe mir als beispiel diesen code kompiliert:</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;

    vector&lt;string&gt; namen;

    namen.push_back(&quot;Hans&quot;);
    namen.push_back(&quot;Peter&quot;);
    namen.push_back(&quot;Klaus&quot;);

    for(vector&lt;string&gt;::iterator iter = namen.begin(); iter != namen.end(); iter++)
    {
        cout &lt;&lt; *iter &lt;&lt; endl;
    }
}
</code></pre>
<p>Und jetzt frage ich mich: wozu soll ich iteratoren hernehmen, wenn es doch auch so geht:</p>
<pre><code class="language-cpp">int main()
{
    vector&lt;string&gt; namen;

    namen.push_back(&quot;Hans&quot;);
    namen.push_back(&quot;Peter&quot;);
    namen.push_back(&quot;Klaus&quot;);

    for (int i=0; i&lt;namen.size (); i++)
    {
        // Da wird mir auch der Inhalt ausgegeben !
        cout&lt;&lt;namen.at (i)&lt;&lt;endl;
    }
    getchar ();
}
</code></pre>
<p>....und warum sollte ich dafür iteratoren hernehmen ? oder ist ein iterator ein zeiger auf ein bestimmtes element im vector, und wenn ja, welche vorteile bringt mir das ??</p>
<p>Danke für Eure hilfe,</p>
<p>Xthomas.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174315/wozu-iteratoren-hernehmen-wenn-es-andere-alternativen-gibt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 18:28:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174315.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Feb 2007 14:52:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 14:52:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese mir zur zeit ein tutorial zum thema iteratoren durch. das prinzip verstehe ich soweit, und ich habe mir als beispiel diesen code kompiliert:</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;

    vector&lt;string&gt; namen;

    namen.push_back(&quot;Hans&quot;);
    namen.push_back(&quot;Peter&quot;);
    namen.push_back(&quot;Klaus&quot;);

    for(vector&lt;string&gt;::iterator iter = namen.begin(); iter != namen.end(); iter++)
    {
        cout &lt;&lt; *iter &lt;&lt; endl;
    }
}
</code></pre>
<p>Und jetzt frage ich mich: wozu soll ich iteratoren hernehmen, wenn es doch auch so geht:</p>
<pre><code class="language-cpp">int main()
{
    vector&lt;string&gt; namen;

    namen.push_back(&quot;Hans&quot;);
    namen.push_back(&quot;Peter&quot;);
    namen.push_back(&quot;Klaus&quot;);

    for (int i=0; i&lt;namen.size (); i++)
    {
        // Da wird mir auch der Inhalt ausgegeben !
        cout&lt;&lt;namen.at (i)&lt;&lt;endl;
    }
    getchar ();
}
</code></pre>
<p>....und warum sollte ich dafür iteratoren hernehmen ? oder ist ein iterator ein zeiger auf ein bestimmtes element im vector, und wenn ja, welche vorteile bringt mir das ??</p>
<p>Danke für Eure hilfe,</p>
<p>Xthomas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235196</guid><dc:creator><![CDATA[Xthomas]]></dc:creator><pubDate>Sun, 25 Feb 2007 14:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 15:08:55 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Iteratoren sind der Klebstoff zwischen Containern und Algorithmen. D.h. sie ermöglichen es, dass ein und der selbe STL-Algo auf vielen unterschiedlichen Containern arbeiten kann. Es heißt aber nicht, dass du immer und überall Iteratoren einsetzen musst. In deinem Beispiel kannst du problemlos auch auf Iteratoren verzichten (wobei ich dann nicht at() sondern den operator[] verwenden würde). Auf der anderen Seite: verwendest du statt der Schleife einen STL-Algo, landest du automatisch wieder bei Iteratoren:</p>
<pre><code class="language-cpp">copy(namen.begin(), namen.end(), ostream_iterator&lt;string&gt;(cout));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1235206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235206</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 25 Feb 2007 15:08:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 15:19:56 GMT]]></title><description><![CDATA[<p>Xthomas schrieb:</p>
<blockquote>
<p>...<br />
Und jetzt frage ich mich: wozu soll ich iteratoren hernehmen, wenn es doch auch so geht:...</p>
</blockquote>
<p>Ganz einfach: Schreib' Deinen obigen Code mal mit einem std::set statt des vectors ...<br />
Hast Du einen iterator (in dem Fall vllt. sogar einen const_iterator) genommen, funktioniert's weiterhin.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235215</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 25 Feb 2007 15:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 15:50:04 GMT]]></title><description><![CDATA[<p>Okay danke euch für die antworten ...<br />
Das heist, iteratoren sind nichts anderes als zeiger, oder ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235233</guid><dc:creator><![CDATA[Xthomas]]></dc:creator><pubDate>Sun, 25 Feb 2007 15:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:09:10 GMT]]></title><description><![CDATA[<p>Xthomas schrieb:</p>
<blockquote>
<p>Das heist, iteratoren sind nichts anderes als zeiger, oder ??</p>
</blockquote>
<p>Falsch, genau andersherum. Iteratoren sind ein sehr allgemeines Konzept. Zeiger sind eine spezielle Implementierung diese Konzepts (genauer gesagt, des Konzepts &quot;Beliebiger-Zugriffs-Iterator&quot; (&quot;random access iterator&quot;), welches wiederum eine Spezialisierung des Konzepts &quot;Iterator&quot; ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235251</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:09:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:12:08 GMT]]></title><description><![CDATA[<p>iteratoren sind &quot;schlauer&quot; als zeiger, und funktionieren nur für datentypen, die das konzept beherschen (z.b. STL Container/Adapter)</p>
<p>man kann es keineswegs gleichsetzen, aber durchaus ähnlich nutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235254</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:12:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:20:01 GMT]]></title><description><![CDATA[<blockquote>
<p>Falsch, genau andersherum. Iteratoren sind ein sehr allgemeines Konzept. Zeiger sind eine spezielle Implementierung diese Konzepts (genauer gesagt, des Konzepts &quot;Beliebiger-Zugriffs-Iterator&quot; (&quot;random access iterator&quot;), welches wiederum eine Spezialisierung des Konzepts &quot;Iterator</p>
</blockquote>
<p>oh okay ... kommt mir zwar für den anfang total durcheinander vor (wie bei allen STL zeugs), aber was solls. Da braucht man schon eine besondere denkweise, überhaupt das 'konzept' der STL zu verstehen <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="🙄"
    /> Vielleicht kommt ja irgendwann der knackpunkt, bei dem ich sage: &quot;aaaah, deswegen ist das also sinnvoll !&quot;</p>
<p>trotzdem nochmal danke für die erklärungen !</p>
<p>Xthomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235261</guid><dc:creator><![CDATA[Xthomas]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:20:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:26:17 GMT]]></title><description><![CDATA[<p>Xthomas schrieb:</p>
<blockquote>
<p>oh okay ... kommt mir zwar für den anfang total durcheinander vor (wie bei allen STL zeugs), aber was solls. Da braucht man schon eine besondere denkweise, überhaupt das 'konzept' der STL zu verstehen</p>
</blockquote>
<p>Ja, das ist so. Die ganze Herangehensweise erfordert eine ganz besondere Denkweise, die man sich erst aneignen muss. Allerdings bin ich leider davon überfordert, das in einem Forum zu erklären. Letzte Woche habe ich an der Uni ein Seminar gegeben, um genau das zu vermitteln -- und ich denke, mit einigem Erfolg. Aber es war eben ein Vortrag mit einer Tafel vonnöten, ohne das hätte ich's nicht geschafft. Und selbst so habe ich mir den Mund fusselig geredet.</p>
<blockquote>
<p>Vielleicht kommt ja irgendwann der knackpunkt, bei dem ich sage: &quot;aaaah, deswegen ist das also sinnvoll !&quot;</p>
</blockquote>
<p>Ja, der wird definitiv kommen. <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/1235268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235268</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:31:51 GMT]]></title><description><![CDATA[<p>Für die C++ Standardlibrary ist immer eine Investition in ein gutes Buch nötig. Man kommt mit kurzen Tutorials und Forenantworten nicht sehr weit. Denn immerhin füllen manche Buchautoren ganze Bücher zum Thema Container, Algorithmen und Iteratoren. Das geht dann halt nur mit vielen Beispielen und genaueren Erklärungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235275</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:32:46 GMT]]></title><description><![CDATA[<blockquote>
<p>Ja, das ist so. Die ganze Herangehensweise erfordert eine ganz besondere Denkweise, die man sich erst aneignen muss.</p>
</blockquote>
<p>Gut, und ich dachte schon, ich währe zu dumm es zu verstehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> Ne, du hast schon recht, die STL erfordert wirklich ein tiefgründiges verständnis der programmiersprache. Da ja 2009 der neue C++ standard rauskommt, möchte ich bis dahin wenigstens die wichtigsten algorithmen und container der STL kennen, sonst blicke ich ja irgendwann garnicht mehr durch ...</p>
<blockquote>
<p>Ja, der wird definitiv kommen. <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>
</blockquote>
<p>...Ich bin beruhigt <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>Xthomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235276</guid><dc:creator><![CDATA[Xthomas]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:32:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Sun, 25 Feb 2007 16:33:49 GMT]]></title><description><![CDATA[<blockquote>
<p>Für die C++ Standardlibrary ist immer eine Investition in ein gutes Buch nötig. Man kommt mit kurzen Tutorials und Forenantworten nicht sehr weit. Denn immerhin füllen manche Buchautoren ganze Bücher zum Thema Container, Algorithmen und Iteratoren. Das geht dann halt nur mit vielen Beispielen und genaueren Erklärungen.</p>
</blockquote>
<p>Danke artchi für den hinweis ... Das tutorial zu den iteratoren ist übrigens von dir ! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1235277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235277</guid><dc:creator><![CDATA[Xthomas]]></dc:creator><pubDate>Sun, 25 Feb 2007 16:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Mon, 26 Feb 2007 15:06:26 GMT]]></title><description><![CDATA[<p>Ich hab mit diesem <a href="http://www.informatik.hs-bremen.de/~brey/stlb.html" rel="nofollow">eBook von Breymann</a> den Knackpunkt erreicht. Find ich wirklich verständlich aufgebaut.<br />
Frage mich wieso das nicht in der Tutorial Liste im Forum ist --&gt; <a href="http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=Downloads&amp;file=index&amp;req=viewsdownload&amp;sid=4" rel="nofollow">Tutorials und eBooks - Deutsch - STL (0)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235818</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Mon, 26 Feb 2007 15:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Tue, 27 Feb 2007 13:14:53 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>(wobei ich dann nicht at() sondern den operator[] verwenden würde).</p>
</blockquote>
<p>Ehrlich jetzt ? Ich hatte früher immer mit [] als Zugriff gearbeitet, bis ich mal gelesen habe, dass .at() eine execption wirft, wenn man ausserhalb des Bereiches ist und [] nicht. Deswegen bin ich davon ausgegangen, dass <a href="http://die.at" rel="nofollow">die.at</a> Methode den Zugriffsoperatoren [] vorzuziehen ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236180</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Tue, 27 Feb 2007 13:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Tue, 27 Feb 2007 13:17:21 GMT]]></title><description><![CDATA[<p>Solange du weißt, was du da machst, ist op[] schneller. Und at() benötigst du eigentlich nur, wenn die Gefahr eines Index-Überlaufs besteht (bei einer korrekt formulierten Iterationsschleife also eher nicht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236183</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 27 Feb 2007 13:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Tue, 27 Feb 2007 13:36:49 GMT]]></title><description><![CDATA[<p>Ja, aber in der for-Schleife muß auch eine Indexprüfung rein. :p Wenn man at() benutzt, kann man sich aber die Prüfung sparen und ein while(true) bauen und um die Schleife ein try-catch. <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>Am besten man benutzt Iteratoren, dann braucht man kein [] und kein at() benutzen. <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="😃"
    /> Am aller aller besten ist aber noch for_each, weil dann sind alle möglichen Fehlerquellen auf ein Minimum reduziert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236188</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 27 Feb 2007 13:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Tue, 27 Feb 2007 13:29:01 GMT]]></title><description><![CDATA[<p>Achja, ich weiß nicht wie weit Bjarne Stroustrup mit seinem Vorschlag gekommen ist: aber er hatte dem Komitee vorgeschlagen, auch in den []-Operator eine Indexprüfung vorzuschreiben. Weil damit endlich C++ von den bösen Bufferoverruns wegkommen würde. (wer nicht hört muß halt fühlen!) Es benutzen halt immer noch zu viele Leute den []-Operator unbedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236189</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 27 Feb 2007 13:29:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wozu iteratoren hernehmen, wenn es andere alternativen gibt ? on Tue, 27 Feb 2007 13:39:13 GMT]]></title><description><![CDATA[<p>Bei manchen STL-libs gibt es ja defines, mit dem man die Bereichsprüfung auch bei opertor[] einschalten kann.<br />
beim BCB5 (Rouge Wave) heißt das _RWSTD_BOUNDS_CHECKING</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1236196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1236196</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 27 Feb 2007 13:39:13 GMT</pubDate></item></channel></rss>