<?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[Konstruktion eines eigenen Iterators]]></title><description><![CDATA[<p>Ich habe eine Klasse geschrieben. Und Instanzen von dieser Klasse speichere ich in einer boost::unordered_map. Nun muss ich gelegentlich diese Map wie ein Array durchgehen. Dazu steht ja in der Boost Dokumentation ein Beispiel</p>
<pre><code class="language-cpp">for(std::string::const_iterator it = x.begin();
            it != x.end(); ++it)
        {
            //mach was...
        }
</code></pre>
<p>Das Problem, das ich jetzt habe (bin ziemlich C++ unerfahren) ist, dass ich nicht weiß wie man so einen Iterator baut. Hat da jemand einen Tip?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270871/konstruktion-eines-eigenen-iterators</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 20:21:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270871.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jul 2010 16:05:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktion eines eigenen Iterators on Mon, 19 Jul 2010 16:05:44 GMT]]></title><description><![CDATA[<p>Ich habe eine Klasse geschrieben. Und Instanzen von dieser Klasse speichere ich in einer boost::unordered_map. Nun muss ich gelegentlich diese Map wie ein Array durchgehen. Dazu steht ja in der Boost Dokumentation ein Beispiel</p>
<pre><code class="language-cpp">for(std::string::const_iterator it = x.begin();
            it != x.end(); ++it)
        {
            //mach was...
        }
</code></pre>
<p>Das Problem, das ich jetzt habe (bin ziemlich C++ unerfahren) ist, dass ich nicht weiß wie man so einen Iterator baut. Hat da jemand einen Tip?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928710</guid><dc:creator><![CDATA[HändyÄndy]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:05:44 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktion eines eigenen Iterators on Mon, 19 Jul 2010 16:10:46 GMT]]></title><description><![CDATA[<p>Geht es nicht, wenn du std::string durch boost::unordered_map&lt;key,value&gt; ersetzt? Halt für die Dereferenzierung einfach it-&gt;second statt *it nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928715</guid><dc:creator><![CDATA[Rotareti]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktion eines eigenen Iterators on Mon, 19 Jul 2010 16:14:16 GMT]]></title><description><![CDATA[<p>Danke für die Antwort.</p>
<p>Deine erste Frage verstehe ich nicht. Ich möchte nicht durch eine Sequenz von Map-Objekten iterieren, sondern durch eine Sequenz von Objekten die in einem Map-Objekt gespeichert sind.</p>
<p>Wie funktioniert das mit dem it-&gt;second? Ist mir unbekannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928718</guid><dc:creator><![CDATA[HändyÄndy]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktion eines eigenen Iterators on Mon, 19 Jul 2010 16:21:17 GMT]]></title><description><![CDATA[<p>Du brauchst keinen eigenen Iterator schreibe, da boost::unordered_map bereits einen zur Verfügung stellt. Genau wie Rotareti schon vermutet hat.</p>
<p>Also schreibe einfach</p>
<pre><code class="language-cpp">for( boost::unordered_map&lt; Key, Mapped &gt;::const_iterator it = x.begin();
            it != x.end(); ++it )
        {
            //mach was...
        }
</code></pre>
<p>Key und Mapped musst Du natürlich durch Deine eigenen Typen ersetzen.<br />
Und anschließend - also da wo 'mach was ..' steht - greift man über</p>
<pre><code class="language-cpp">Key k = it-&gt;first;
    Mapped reference = it-&gt;second;
</code></pre>
<p>sowohl auf den Key, als auch auf den Wert zu. 'first' und 'second' sind die beiden Member des sogenannten 'value_type's der boost::unordered_map, die Dir Key und den Wert liefern.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928725</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktion eines eigenen Iterators on Mon, 19 Jul 2010 16:24:56 GMT]]></title><description><![CDATA[<p>HändyÄndy schrieb:</p>
<blockquote>
<p>Deine erste Frage verstehe ich nicht. Ich möchte nicht durch eine Sequenz von Map-Objekten iterieren, sondern durch eine Sequenz von Objekten die in einem Map-Objekt gespeichert sind.</p>
</blockquote>
<p>Alle STL-Container, sowie mit Sicherheit auch die von Boost, bieten eine Iteratorschnittstelle an. Ich habe boost::unordered_map selbst noch nicht eingesetzt, aber nehme mal an das dies identisch wie bei der std::map ist.</p>
<p>In einer map sind die Einträge als Wertepaar (std::pair) abgelegt, bestehend aus den Einträgen namens &quot;first&quot; (Erster Teil des Paars, hier der Schlüssel) und &quot;second&quot; (Zweiter Teil des Paars, hier der Wert). Das erst einmal dazu was -&gt;second bedeutet.</p>
<pre><code class="language-cpp">// Beispiel mit std::map
std::map&lt;int, std::string&gt; testmap;

// Jedes Schlüssel/Wertepaar ist als std::pair in der map abgelegt.
// In diesen Fall: std::pair&lt;int, std::string&gt; mit den beiden Membern
// first (hier der int-Schlüssel) und second (hier der string).

for(std::map&lt;int, std::string&gt;::const_iterator it=testmap.begin, end=testmap.end(); it!=end; ++it) {
    std::cout &lt;&lt; it-&gt;first &lt;&lt; &quot;, &quot; &lt;&lt; it-&gt;second &lt;&lt; &quot;\n&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1928727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928727</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:24:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktion eines eigenen Iterators on Mon, 19 Jul 2010 16:39:22 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Antwort. Funktioniert wunderbar. <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/1928735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928735</guid><dc:creator><![CDATA[HändyÄndy]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:39:22 GMT</pubDate></item></channel></rss>