<?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[Map mit Listen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in einem &quot;Map&quot; neben &quot;Int&quot; Schlüsseln &quot;list&quot; bzw. &quot;vector&quot; Werte speichern. Ich suche eine Möglichkeit nachträglich listenelemente zu einem exitierenden Schlüssel einzutragen. Im folgende Code habe ich das versucht, nur werden durch &quot;cout&quot; nur die ersten zwei Elemente ausgegeben. Wie kann man das hinbekommen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;list&gt;
#include &lt;map&gt;
#include &lt;utility&gt;

using namespace std;

int main () {

    list&lt;int&gt; Liste;
    map&lt;int, list&lt;int&gt; &gt; myMap;

    Liste.push_back(11);
    Liste.push_back(22);

    myMap.insert(pair&lt;int, list&lt;int&gt; &gt;(42, Liste));

    Liste.push_back(33);
    Liste.push_back(44);
    Liste.push_back(55);

    for(list&lt;int&gt;::iterator it= myMap[42].begin(); it != myMap[42].end(); it++) 
        cout &lt;&lt; *itera &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Danke für Hilfe!</p>
<p>Jo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191670/map-mit-listen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 04:35:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191670.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Sep 2007 13:18:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 13:18:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte in einem &quot;Map&quot; neben &quot;Int&quot; Schlüsseln &quot;list&quot; bzw. &quot;vector&quot; Werte speichern. Ich suche eine Möglichkeit nachträglich listenelemente zu einem exitierenden Schlüssel einzutragen. Im folgende Code habe ich das versucht, nur werden durch &quot;cout&quot; nur die ersten zwei Elemente ausgegeben. Wie kann man das hinbekommen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;list&gt;
#include &lt;map&gt;
#include &lt;utility&gt;

using namespace std;

int main () {

    list&lt;int&gt; Liste;
    map&lt;int, list&lt;int&gt; &gt; myMap;

    Liste.push_back(11);
    Liste.push_back(22);

    myMap.insert(pair&lt;int, list&lt;int&gt; &gt;(42, Liste));

    Liste.push_back(33);
    Liste.push_back(44);
    Liste.push_back(55);

    for(list&lt;int&gt;::iterator it= myMap[42].begin(); it != myMap[42].end(); it++) 
        cout &lt;&lt; *itera &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Danke für Hilfe!</p>
<p>Jo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359422</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Wed, 05 Sep 2007 13:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 13:21:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Beim insert wird die Liste kopiert. Die Liste in der map weiß also nichts von den neu hinzugefügten Elementen. Du mußt die Liste in der map ansprechen.</p>
<pre><code class="language-cpp">myMap[42].push_back(33);
    myMap[42].push_back(44);
    myMap[42].push_back(55);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359425</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 05 Sep 2007 13:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 13:22:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in dem Moment, wo du die Liste in die Map packst, wird von der Liste eine Kopie angefertigt. Die Kopie wird in die Map getan.</p>
<p>Du arbeitest da also mit einer anderen Liste weiter, nicht mit der, die in der Map ist.</p>
<p>Eine Lösung ist, Zeiger auf Listen zu verwenden:</p>
<pre><code class="language-cpp">std::map&lt;int, std::list&lt;int&gt;*&gt; myMap;

std::list&lt;int&gt;* p_list = new std::list&lt;int&gt;;

p_list-&gt;push_back(11);
p_list-&gt;push_back(22);

myMap[42] = p_list;

p_list-&gt;push_back(33);
p_list-&gt;push_back(44);
p_list-&gt;push_back(55);

// usw.
</code></pre>
<p>Da musst du nur nachher aufpassen, dass du die Listen auch mit delete wieder löschst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359426</guid><dc:creator><![CDATA[Horst Baldowin III Jr.]]></dc:creator><pubDate>Wed, 05 Sep 2007 13:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 13:33:09 GMT]]></title><description><![CDATA[<p>Danke soweit! Aber wie sieht dann die ausgabe aus?</p>
<p>so nicht?!</p>
<p>for(list&lt;int&gt;*::iterator it = myMap[42].begin(); it != myMap[42].end(); it++)<br />
cout &lt;&lt; *it &lt;&lt; endl;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359442</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Wed, 05 Sep 2007 13:33:09 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 13:39:03 GMT]]></title><description><![CDATA[<p>NoPanic2007 schrieb:</p>
<blockquote>
<p>list&lt;int&gt;*::iterator</p>
</blockquote>
<p>Was soll das denn sein?<br />
Der Stern gehört da ja nun wirklich nicht hin!</p>
<p>Das geht dann natürlich so:</p>
<pre><code class="language-cpp">for(list&lt;int&gt;::iterator it = myMap[42]-&gt;begin(); it != myMap[42]-&gt;end(); it++)
{
    cout &lt;&lt; *it &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359445</guid><dc:creator><![CDATA[Horst Baldowin III Jr.]]></dc:creator><pubDate>Wed, 05 Sep 2007 13:39:03 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 14:34:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;list&gt;
#include &lt;map&gt;
#include &lt;utility&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

int main () 
{

    std::list&lt;int&gt; list;
    std::map&lt;std::size_t, std::list&lt;int&gt; &gt; map;
    map.insert(std::make_pair(42, list));
    for (std::size_t i = 0; i &lt; 10; ++i)
        map[42].push_back(i * 10 + i);

   std::copy(map[42].begin(), map[42].end(), std::ostream_iterator&lt;int&gt;(std::cout, &quot; &quot;));
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359494</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 05 Sep 2007 14:34:56 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 14:24:01 GMT]]></title><description><![CDATA[<p>Was macht den map[42] genau? sucht das immer in der map nach nem key 42?<br />
Dann wäre das aber sehr langsam</p>
<pre><code class="language-cpp">for (std::size_t i = 0; i &lt; 10; ++i)
        map[42].push_back(i * 10 + i);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359503</guid><dc:creator><![CDATA[serer]]></dc:creator><pubDate>Wed, 05 Sep 2007 14:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 14:27:52 GMT]]></title><description><![CDATA[<p>Das sieht gut aus!!! Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359507</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Wed, 05 Sep 2007 14:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 14:36:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Was macht den map[42] genau? sucht das immer in der map nach nem key 42?<br />
Dann wäre das aber sehr langsam</p>
</blockquote>
<p>oO dann mach halt</p>
<pre><code class="language-cpp">std::map&lt;std::size_t, std::list&lt;int&gt; &gt;::iterator it = map.begin() + 42;
(*it).push_back(11);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359514</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 05 Sep 2007 14:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 14:43:39 GMT]]></title><description><![CDATA[<p>Das wird wohl nicht gehen. map hat schließlich keine random access iteratoren</p>
<pre><code class="language-cpp">std::map&lt;std::size_t, std::list&lt;int&gt; &gt;::iterator it = map.find(42);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359519</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 05 Sep 2007 14:43:39 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 17:20:21 GMT]]></title><description><![CDATA[<p>Wenn man das Ganze dynamisch machen möchte, wie sieht das dann aus?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;list&gt;
#include &lt;map&gt;
#include &lt;utility&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

int main () 
{

    std::list&lt;int&gt; list;
    typedef std::map&lt;std::size_t, std::list&lt;int&gt; &gt; myMap;
    myMap* map;

    map-&gt;insert(std::make_pair(42, list));
    for (std::size_t i = 0; i &lt; 10; ++i)
        map[42].-&gt;(??????)push_back(i * 10 + i);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359631</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Wed, 05 Sep 2007 17:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 19:34:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">myMap* map;
    map = new myMap; //nicht vergessen
    map-&gt;insert(std::make_pair(42, list));
    for (std::size_t i = 0; i &lt; 10; ++i)
        (*map)[42].push_back(i * 10 + i);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1359654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359654</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 05 Sep 2007 19:34:21 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 19:31:16 GMT]]></title><description><![CDATA[<p>dabei ist eine std::map schon ein dynamischer Container?! Was solln das ?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359727</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 05 Sep 2007 19:31:16 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Wed, 05 Sep 2007 19:34:03 GMT]]></title><description><![CDATA[<p>Das ist natürlich die Frage. <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="🙂"
    /><br />
Man sollte dynamische Speicherverwaltung nur anwenden, wenn man sie unbedingt braucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1359730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1359730</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 05 Sep 2007 19:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 09:33:14 GMT]]></title><description><![CDATA[<p>Kann das mal jemand erläutern!?</p>
<p>Wenn ich delete map; mache, bin ich dann auf der sicheren Seite? Oder wird da irgendwas nicht abgeräumt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360048</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Thu, 06 Sep 2007 09:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 09:35:31 GMT]]></title><description><![CDATA[<p>Ja klar bist du dann auf der sichern Seite (was immer das sein mag). Wir verstehen hier nur nicht, warum du unbedingt eine map dynamisch erstellen willst. Das macht hier einfach keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360051</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 06 Sep 2007 09:35:31 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 09:56:03 GMT]]></title><description><![CDATA[<p>das ganze soll in ein grösseres programm eingegliedert werden und nur eventuell benutzt werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360065</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Thu, 06 Sep 2007 09:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 10:05:10 GMT]]></title><description><![CDATA[<p>Noch mal. Warum willst du eine map dynamisch erstellen? Was genau brauchst du was du nicht mit Referenzen machen kannst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360076</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 06 Sep 2007 10:05:10 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 10:24:48 GMT]]></title><description><![CDATA[<p>NoPanic2007 schrieb:</p>
<blockquote>
<p>das ganze soll in ein grösseres programm eingegliedert werden und nur eventuell benutzt werden...</p>
</blockquote>
<p>(Ich setze mal voraus, dass es Dir um &quot;Speicherplatzminimierung&quot; geht)<br />
map verwaltet seine Elemente sowieso schon dynamisch (ist IIRC zwar nicht vorgeschrieben aber gängige Praxis) und sein &quot;Verwaltungsteil&quot; ist nicht besonders groß - da &quot;spart&quot; man am falschen Ende, wenn man die Map selbst per new allozierst.<br />
Du kannst ja mal mit einem &quot;sizeof()&quot; nachsehen, wie viel Speicherplatz die map verwendet - ich bin sicher: Ist zu vernachlässigen.<br />
Gleichzeitig kaufst Du Dir aber Probleme mit der dynamischen Speicherverwaltung ein (new ist sehr &quot;laufzeitfressend&quot;, Verwaltung von new/delete ist aufwendig, Code wird durch Verwendung von &quot;-&gt;&quot;bzw. &quot;*.&quot; unübersichtlich, ....), die es nicht wert sind.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1360100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360100</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 06 Sep 2007 10:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 11:06:42 GMT]]></title><description><![CDATA[<p>Okay, verstehe! Merci. <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/1360130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360130</guid><dc:creator><![CDATA[NoPanic2007]]></dc:creator><pubDate>Thu, 06 Sep 2007 11:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit Listen on Thu, 06 Sep 2007 11:50:47 GMT]]></title><description><![CDATA[<p>Wenn du dann auch noch den Teil des Programms, der nur ab und an benutzt wird, in eine eigene Funktion auslagerst und dort die Map lokal erzeugst, dann wird der Speicherplatz wie beabsichtigt nur dann belet wenn er gebraucht wird und automatisch nach Beenden der Funktion wieder verlassen. Damit sparst du gegenueber der dynamischen Verwaltung nicht nur den Arbeitsaufwand fuer new und delete sondern auch noch die 4 Byte fuer den Pointer <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/1360165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1360165</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 06 Sep 2007 11:50:47 GMT</pubDate></item></channel></rss>