<?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[const_iterator und iterator von hash_map]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich denn auf einer hash_map ein find und dann ein anschließendes erase machen?<br />
Für das find benötige ich ja einen const_iterator und fürs erase einen normalen iterator oder? Spielt das eine rolle wenn ich außerhalb der klasse einen find mache - brauche ich hier zwingend einen const_iterator?</p>
<p>also ich versuche außerhalb einer klasse auf eine hash_map wie folgt zuzugreifen:</p>
<pre><code class="language-cpp">typename  hash_map&lt; Key,
              DATA&lt;T&gt;,HASH_FUNCTION&gt;::const_iterator h_it;
h_it = hash-&gt;Get_Hash_Map().find(My_Key);
// Hier würde ich gerne den gefundenen iterator an die klasse Hash übergeben
// um dort ein erase zu machen. nur geht das nicht auf const_iteratoren. wie kann ich vorgehen? 
hash-&gt;Erase_Element(h_it);

// und in Klasse Hash: 

 template &lt;class T&gt; void
Hash&lt;T&gt;::Erase_Element(hash_map&lt; Key,
                  DATA&lt;T&gt;,HASH_FUNCTION&gt;::iterator h_it)
{
    m_hash_map.erase(h_it);
}
</code></pre>
<p>Nur kennt er auch hash_map&lt; Key,DATA&lt;T&gt;,HASH_FUNCTION&gt;::iterator als typ nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291987/const_iterator-und-iterator-von-hash_map</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 08:32:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291987.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Aug 2011 14:55:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 14:55:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich denn auf einer hash_map ein find und dann ein anschließendes erase machen?<br />
Für das find benötige ich ja einen const_iterator und fürs erase einen normalen iterator oder? Spielt das eine rolle wenn ich außerhalb der klasse einen find mache - brauche ich hier zwingend einen const_iterator?</p>
<p>also ich versuche außerhalb einer klasse auf eine hash_map wie folgt zuzugreifen:</p>
<pre><code class="language-cpp">typename  hash_map&lt; Key,
              DATA&lt;T&gt;,HASH_FUNCTION&gt;::const_iterator h_it;
h_it = hash-&gt;Get_Hash_Map().find(My_Key);
// Hier würde ich gerne den gefundenen iterator an die klasse Hash übergeben
// um dort ein erase zu machen. nur geht das nicht auf const_iteratoren. wie kann ich vorgehen? 
hash-&gt;Erase_Element(h_it);

// und in Klasse Hash: 

 template &lt;class T&gt; void
Hash&lt;T&gt;::Erase_Element(hash_map&lt; Key,
                  DATA&lt;T&gt;,HASH_FUNCTION&gt;::iterator h_it)
{
    m_hash_map.erase(h_it);
}
</code></pre>
<p>Nur kennt er auch hash_map&lt; Key,DATA&lt;T&gt;,HASH_FUNCTION&gt;::iterator als typ nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113036</guid><dc:creator><![CDATA[Testo]]></dc:creator><pubDate>Wed, 31 Aug 2011 14:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 15:13:29 GMT]]></title><description><![CDATA[<p>Testo schrieb:</p>
<blockquote>
<p>wie kann ich denn auf einer hash_map ein find und dann ein anschließendes erase machen?</p>
</blockquote>
<p>hash_map kenne ich nicht. Aber unordered_map sollte das können.</p>
<p>Testo schrieb:</p>
<blockquote>
<p>Für das find benötige ich ja einen const_iterator und fürs erase einen normalen iterator oder?</p>
</blockquote>
<p>Wie gesagt, ich kenne hash_map nicht. hash_map ist nicht Teil des C++ ISO Standards. unordered_map ist Teil des kommenden Standards. unordered_map bietet 2 find-Funktionen an (const/nonconst overload). Das erase nimmt einen const_iterator und genauso wie bei Zeigern, gibt es (sollte es geben) eine implizite iterator-&gt;const_iterator Konvertierung.</p>
<p>Testo schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;class T&gt;
void Hash&lt;T&gt;::Erase_Element(hash_map&lt; Key,
                  DATA&lt;T&gt;,HASH_FUNCTION&gt;::iterator h_it)
{
    m_hash_map.erase(h_it);
}
</code></pre>
<p>Nur kennt er auch hash_map&lt; Key,DATA&lt;T&gt;,HASH_FUNCTION&gt;::iterator als typ nicht?</p>
</blockquote>
<p>Bei Dir fehlt ja auch ein <code>typename</code> . Der Typ hash_map&lt;Key,DATA&lt;T&gt;,HASH_FUNCTION&gt; hängt vom Templateparameter T ab. Dementsprechend musst Du per <code>typename</code> sagen, dass sich <code>iterator</code> auf einen Typ bezieht und nicht etwa eine auf Funktion oder Objekt.</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113051</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 31 Aug 2011 15:13:29 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 15:31:25 GMT]]></title><description><![CDATA[<p>Danke für die erste Hilfe.</p>
<p>Gut der typename fehlt ja. Aber mir geht es eher darum dass ich einen const_iterator übergebe an Erase_Element und dann in Erase_Element in der signatur nur einen ::iterator definiere. Das geht doch so nicht. Ich brauche aber einen ::iterator weil ich ja ein erase mache. Wie kann ich das lösen bezüglich dem const_iterator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113062</guid><dc:creator><![CDATA[Testo]]></dc:creator><pubDate>Wed, 31 Aug 2011 15:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 15:32:08 GMT]]></title><description><![CDATA[<p>Wieso brauchst du einen const_iterator, um ein Element zu löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113063</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 15:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 15:38:11 GMT]]></title><description><![CDATA[<p>ich brauche eben kein const_iterator.<br />
Ich befinde mich in einer externen klasse und rufe ein find auf der hash_map auf. Zu diesem find ist ein const_iterator nötig. Gleichzeitig will ich aber das gefundene element löschen. Zum erase() bruache ich jetzt aber einen normalen iterator. Verstehst du mein problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113067</guid><dc:creator><![CDATA[Testo]]></dc:creator><pubDate>Wed, 31 Aug 2011 15:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 16:25:43 GMT]]></title><description><![CDATA[<p>Was soll man dazu noch sagen? Entweder beschwerst Du Dich bei dem, der hash_map geschrieben hat (Microsoft?) oder Du nimmst einfach stattdessen unordered_map!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113082</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 31 Aug 2011 16:25:43 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 16:30:06 GMT]]></title><description><![CDATA[<p>nein. wenn man die methoden in die klasse auslagert kann man auch mit einem normalen iterator auf der hash_map ein find ausführen. Trotzdem danke für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113084</guid><dc:creator><![CDATA[Testo]]></dc:creator><pubDate>Wed, 31 Aug 2011 16:30:06 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 17:49:24 GMT]]></title><description><![CDATA[<p>In die Klasse auslagern? <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 />
Wenns deine Klasse ist: Implementier doch einfach das erase mit dem const_iterator, ich sehe da kein Problem. Wenn sichs irgendwo beißt, dann nimm nen const_cast, ich meine mich erinnern zu können, dass der erforderlich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2113111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113111</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 31 Aug 2011 17:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to const_iterator und iterator von hash_map on Wed, 31 Aug 2011 19:21:16 GMT]]></title><description><![CDATA[<p>der standard fordert das ein iterator immer in einen const_iterator konvertierbar sein muss. Wnen deine Klasse das nicht erfüllt, ist das nicht das Problem des Standards <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/2113170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2113170</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 31 Aug 2011 19:21:16 GMT</pubDate></item></channel></rss>