<?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[operator= und insert bei std::map]]></title><description><![CDATA[<p>Hallo.<br />
Kurze Frage: Tut folgender Code genau das selbe, oder gibt es einen Unterschied?</p>
<pre><code class="language-cpp">// eins
this-&gt;m_mapConstants.insert(std::pair&lt;char*, int&gt;(pszName, iValue));

// zwei
this-&gt;m_mapConstants[pszName] = iValue;
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260510/operator-und-insert-bei-std-map</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 03:26:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260510.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Feb 2010 05:35:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 05:35:56 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Kurze Frage: Tut folgender Code genau das selbe, oder gibt es einen Unterschied?</p>
<pre><code class="language-cpp">// eins
this-&gt;m_mapConstants.insert(std::pair&lt;char*, int&gt;(pszName, iValue));

// zwei
this-&gt;m_mapConstants[pszName] = iValue;
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851288</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 06 Feb 2010 05:35:56 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 07:10:51 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Hallo.<br />
Kurze Frage: Tut folgender Code genau das selbe, oder gibt es einen Unterschied?</p>
<pre><code class="language-cpp">// eins
this-&gt;m_mapConstants.insert(std::pair&lt;char*, int&gt;(pszName, iValue));

// zwei
this-&gt;m_mapConstants[pszName] = iValue;
</code></pre>
</blockquote>
<p>Nein.</p>
<p>Das erste erstellt eine Kopie des Paares in der Map, falls der Schlüssel noch nicht vorhanden war. Falls der Schlüssel schon in der Map war, passiert nichts.</p>
<p>Das zweite verändert/fügt_hinzu das Paar in der Map auf jeden Fall. Wenn der Schlüssel noch nicht vorhanden war, wird ein entsprechendes Paar angelegt, wobei pair.second Default-konstruiert. Dein iValue wird über op= an pair.second übergeben.</p>
<p>btw: char* als Schlüssel ist ganz großer Käse. Wenn Du einen Comparator benutzt, der die Strings vergleicht, kannst Du die Map durcheinanderbringen, indem Du die Strings veränderst. Das ist möglich, weil Du die Strings nicht direkt speicherst, sondern nur über die Zeiger. Nimm doch einfach std::string!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851293</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sat, 06 Feb 2010 07:10:51 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 08:12:53 GMT]]></title><description><![CDATA[<p>zwei ist scheiße, weils viel zu oft den constructor aufruft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851299</guid><dc:creator><![CDATA[und]]></dc:creator><pubDate>Sat, 06 Feb 2010 08:12:53 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 11:54:20 GMT]]></title><description><![CDATA[<p>und schrieb:</p>
<blockquote>
<p>zwei ist scheiße, weils viel zu oft den constructor aufruft</p>
</blockquote>
<p>Welchen ctor... <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/1851329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851329</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 06 Feb 2010 11:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 12:34:40 GMT]]></title><description><![CDATA[<p>Ok, danke.<br />
Die char* werden nicht verändert, sie sind konstant.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851353</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 06 Feb 2010 12:34:40 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 13:13:53 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Ok, danke.<br />
Die char* werden nicht verändert, sie sind konstant.</p>
<p>Gruß</p>
</blockquote>
<p>Dann mach sie wenigstens konstant oder benutze, wie Sebastian bereits sagt einen konstanten <code>std::string</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851381</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 06 Feb 2010 13:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 13:21:56 GMT]]></title><description><![CDATA[<p>Ok, das mit dem Konstant sehe ich ein. Aber nicht mit std::string, das wäre sinnlos weil ich nirgendwo in meinem Programm mit std::string Arbeite, die unnötige Herumkonvertiererei würde nichts bringen.</p>
<p>Ich habe gerade noch eine Frage: Wann genau wird der Iterator ungültig? Kann man den Iterator nach einem Aufruf von erase() noch benutzen?</p>
<p>Löscht folgender Code sämtliche Daten? Ich hoffe ja sonst habe ich das mit den Iteratoren wohl immer noch nicht ganz verstanden.</p>
<pre><code class="language-cpp">std::map&lt;char*, Signature_s*, CmpStr&gt;::iterator it = this-&gt;m_mapSignatures.find(pszName);

if (!bShared &amp;&amp; it != this-&gt;m_mapSignatures.end())
{
	delete[] it-&gt;first; // der char* als Key
	delete[] it-&gt;second-&gt;m_pszSignature; // ein char* im Struct
	delete it-&gt;second; // der Struct selber (Signature_s*)

	this-&gt;m_mapSignatures.erase(it);
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851386</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 06 Feb 2010 13:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 13:41:23 GMT]]></title><description><![CDATA[<p>Schau mal hier:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851402</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 06 Feb 2010 13:41:23 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 13:59:00 GMT]]></title><description><![CDATA[<p>Hi.<br />
Ich kenne den Beitrag, danke. Habe ihn auch gerade noch einmal durchgelesen, jedoch erklärt er mir nicht, wann ein Iterator ungültig wird. Im Beitrag steht geschrieben, dass std::map new und delete standardmäßig verwendet. Ich muss doch trotzdem die Daten des Iterators selber löschen oder nicht?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851415</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 06 Feb 2010 13:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 14:00:26 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Habe ihn auch gerade noch einmal durchgelesen, jedoch erklärt er mir nicht, wann ein Iterator ungültig wird.</p>
</blockquote>
<p>Wirf mal einen Blick auf die Tabelle am Schluss...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851416</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 06 Feb 2010 14:00:26 GMT</pubDate></item><item><title><![CDATA[Reply to operator= und insert bei std::map on Sat, 06 Feb 2010 14:27:31 GMT]]></title><description><![CDATA[<p>Ach so. Stimmt. Dennoch muss ich aber it-&gt;second-&gt;m_pszSignature trotzdem manuell löschen oder? Oder ich baue einen Dekonstruktor der die Signatur löscht. Ist im Endeffekt das gleiche, oder?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851433</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 06 Feb 2010 14:27:31 GMT</pubDate></item></channel></rss>