<?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[STL - Iteratoren]]></title><description><![CDATA[<p>Hallo, ich versuch mich gerade ein wenig in die Thematik der STL einzuarbeiten und verstehe dabei folgende Syntax nicht:</p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator iter = ...;
</code></pre>
<p>Wie darf ich das verstehen? Ist iterator eine eigene Klasse/Struktur innerhalb des vectors selbst? Wenn ja instanziere ich mit obigem Code nur ein Objekt der Klasse/Struktur iterator?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214529/stl-iteratoren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 11:38:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214529.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 May 2008 12:32:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 12:32:54 GMT]]></title><description><![CDATA[<p>Hallo, ich versuch mich gerade ein wenig in die Thematik der STL einzuarbeiten und verstehe dabei folgende Syntax nicht:</p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator iter = ...;
</code></pre>
<p>Wie darf ich das verstehen? Ist iterator eine eigene Klasse/Struktur innerhalb des vectors selbst? Wenn ja instanziere ich mit obigem Code nur ein Objekt der Klasse/Struktur iterator?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519699</guid><dc:creator><![CDATA[AxtImWalde]]></dc:creator><pubDate>Fri, 30 May 2008 12:32:54 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 12:38:02 GMT]]></title><description><![CDATA[<p>AxtImWalde schrieb:</p>
<blockquote>
<p>Wie darf ich das verstehen? Ist iterator eine eigene Klasse/Struktur innerhalb des vectors selbst? Wenn ja instanziere ich mit obigem Code nur ein Objekt der Klasse/Struktur iterator?</p>
</blockquote>
<p>Ja, eigentlich müsste die Definition daher</p>
<pre><code class="language-cpp">typename vector&lt;int&gt;::iterator iter = ...;
</code></pre>
<p>lauten, damit klar ist, dass iterator keine öffenliche statische Membervariable, sondern ein Typ ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519707</guid><dc:creator><![CDATA[bongo karl]]></dc:creator><pubDate>Fri, 30 May 2008 12:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 12:39:43 GMT]]></title><description><![CDATA[<p>iter ist in dem Fall ein Iterator auf einen std::vector aus ints, d.h.<br />
so eine Art Pointer auf den Vector. Damit ist es möglich, durch einen Vector wie durch ein normales Array durchzuiterieren, also kann man z.B. mit iter++ das nächste Element im Vector ansprechen.</p>
<p>Und ja, so viel ich weiss ist in deinem Fall iter ein Objekt der Klasse std::vector&lt;int&gt;::iterator</p>
<p>der von mir oben verwendete operator ++ ist für diese Klasse überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519710</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Fri, 30 May 2008 12:39:43 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 12:57:28 GMT]]></title><description><![CDATA[<p>das typename muss doch weggelassen werden. es ist nur für templates nötig:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
void foo()
{
    typename T::iterator iter = ...;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1519726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519726</guid><dc:creator><![CDATA[bongo karl]]></dc:creator><pubDate>Fri, 30 May 2008 12:57:28 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 13:17:03 GMT]]></title><description><![CDATA[<p>AxtImWalde schrieb:</p>
<blockquote>
<p>Hallo, ich versuch mich gerade ein wenig in die Thematik der STL einzuarbeiten und verstehe dabei folgende Syntax nicht:</p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator iter = ...;
</code></pre>
<p>Wie darf ich das verstehen? Ist iterator eine eigene Klasse/Struktur innerhalb des vectors selbst?</p>
</blockquote>
<p>Das oder ein typedef-Alias auf einen Typ, der möglicherweise woanders definiert ist (im Falle von vector&lt;int&gt; könnte es sich auch um ein typedef auf int* handeln). In jedem Falle ist es ein Typbezeichner.</p>
<p>AxtImWalde schrieb:</p>
<blockquote>
<p>Wenn ja instanziere ich mit obigem Code nur ein Objekt der Klasse/Struktur iterator?</p>
</blockquote>
<p>Richtig, das ist eine ganz normale Variablendefinition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519753</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 30 May 2008 13:17:03 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 13:20:38 GMT]]></title><description><![CDATA[<p>AxtImWalde schrieb:</p>
<blockquote>
<p>Wie darf ich das verstehen? Ist iterator eine eigene Klasse/Struktur innerhalb des vectors selbst? Wenn ja instanziere ich mit obigem Code nur ein Objekt der Klasse/Struktur iterator?</p>
</blockquote>
<p>Einerseits gibt es in C++ die Möglichkeit, innerhalb von Klassen Unterklassen zu definieren, zum anderen gibts die Möglicheit, typedefs auf andere Klassen innerhalb von Klassen zu definieren. Beispiel:</p>
<pre><code class="language-cpp">class SomeOtherClass {/*...*/};

class Outer {
public: 
  class Inner { /*...*/ };
  typedef SomeOtherClass Other;

  /*...*/
};

Outer::Inner i; //Objekt vom Typ Inner
Outer::Other o; //Objekt vom Typ SomeOtherClass
</code></pre>
<p>Ich bin nicht ganz sicher obs im Standard vorgeschrieben ist, aber die Iteratoren der Standardbibliothek sind meiner Erfahrung nach immer externe Klassen die über einen typedef in den Containern deklariert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519756</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 30 May 2008 13:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 14:25:40 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich bin nicht ganz sicher obs im Standard vorgeschrieben ist, aber die Iteratoren der Standardbibliothek sind meiner Erfahrung nach immer externe Klassen die über einen typedef in den Containern deklariert werden.</p>
</blockquote>
<p>Genau das hatte mich auch verwirrt. In dem Tutorial, das ich gelesen habe, waren Iteratoren einmal völlig unabhängig von den Containern benutzt und erklärt worden (als unabhängige Klassen) und einmal in obigem Kontext ohne Hinweis darauf, wieso ich jetzt über den Container auch nen Iterator deklarieren kann.</p>
<p>Noch ne Frage hierzu: Wenn Iteratoren externe Klassen darstellen, inwiefern können Iteratoren dann überhaupt auf Containern operieren? Als externe Klasse wüsste der Iterator doch garnicht, wie der interne Aufbau des Containers aussieht. Ich dachte nur die Schnittstelle, die die Iteratoren nach &quot;außen&quot; (also den Algorithmen) zur Verfügung stellen, sei immer die gleiche, der interne Aufbau jedoch von Container zu Container unterschiedlich?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519810</guid><dc:creator><![CDATA[AxtImWald]]></dc:creator><pubDate>Fri, 30 May 2008 14:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to STL - Iteratoren on Fri, 30 May 2008 14:35:14 GMT]]></title><description><![CDATA[<p>das typedef für <code>Container::iterator</code> ist implementation-defined.<br />
das bedeutet, dass die klasse/struktur <code>Container::iterator</code> sehr wohl auch eine nested class sein. der iterator muss natürlich &quot;wissen&quot;, wie der container intern aufgebaut ist. bei vector&lt;X&gt; kann der iterator auch einfach als X* definiert sein, muss aber nicht.<br />
das einzige was feststeht ist, dass <code>std::iterator_traits</code> für den jeweiligen iterator spezialisiert sein muss (d.h. idR wird der iterator von <code>std::iterator</code> abgeleitet sein), und das <code>Container::reverse_iterator</code> , sofern es einen gibt, immer ein typedef auf <code>std::reverse_iterator&lt;Container::iterator&gt;</code> ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1519819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1519819</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Fri, 30 May 2008 14:35:14 GMT</pubDate></item></channel></rss>