<?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[Problem mit Anzahl Elementen in einer Map]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich habe kürzlich ein komisches Verhalten bei einem von mir verwendeten Map festgestellt:</p>
<p>Hier mal der Code:</p>
<pre><code class="language-cpp">#include &lt;ctime&gt;
#include &lt;vector&gt;
#include &lt;map&gt;
#include &lt;iostream&gt;

using namespace std;

int main()
{
	typedef unsigned long int uli;

	uli n=259;

	// initialize random seed:
	srand ( time(NULL) );

	// init the map
	std::map&lt;uli,uli&gt; randPermMap;
	std::map&lt;uli,uli&gt;::iterator iter;

	for (uli i=1; i&lt;=n; i++)
		randPermMap[rand()] = i;

	uli j = 0;
	for(iter = randPermMap.begin(); iter != randPermMap.end(); iter++)
	{
		std::cout &lt;&lt; j &lt;&lt; &quot; map output 1: &quot; &lt;&lt; iter-&gt;first &lt;&lt; &quot; second: &quot; &lt;&lt; iter-&gt;second &lt;&lt; &quot;\n&quot;;
		j++	;
	}

	return 0;
}
</code></pre>
<p>Solange n &lt;=256 ist, funktioniert alles wunderbar, sobald n grösser wird, kann es vorkommen, dass nicht mehr alle Elemente in der MAP richtig definiert werden und es kommt zu einem Programm absturz.<br />
Weiss jemand, wieso dass so ist?</p>
<p>Gruss und besten Dank</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242501/problem-mit-anzahl-elementen-in-einer-map</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 00:51:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242501.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jun 2009 14:17:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 14:17:15 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich habe kürzlich ein komisches Verhalten bei einem von mir verwendeten Map festgestellt:</p>
<p>Hier mal der Code:</p>
<pre><code class="language-cpp">#include &lt;ctime&gt;
#include &lt;vector&gt;
#include &lt;map&gt;
#include &lt;iostream&gt;

using namespace std;

int main()
{
	typedef unsigned long int uli;

	uli n=259;

	// initialize random seed:
	srand ( time(NULL) );

	// init the map
	std::map&lt;uli,uli&gt; randPermMap;
	std::map&lt;uli,uli&gt;::iterator iter;

	for (uli i=1; i&lt;=n; i++)
		randPermMap[rand()] = i;

	uli j = 0;
	for(iter = randPermMap.begin(); iter != randPermMap.end(); iter++)
	{
		std::cout &lt;&lt; j &lt;&lt; &quot; map output 1: &quot; &lt;&lt; iter-&gt;first &lt;&lt; &quot; second: &quot; &lt;&lt; iter-&gt;second &lt;&lt; &quot;\n&quot;;
		j++	;
	}

	return 0;
}
</code></pre>
<p>Solange n &lt;=256 ist, funktioniert alles wunderbar, sobald n grösser wird, kann es vorkommen, dass nicht mehr alle Elemente in der MAP richtig definiert werden und es kommt zu einem Programm absturz.<br />
Weiss jemand, wieso dass so ist?</p>
<p>Gruss und besten Dank</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721112</guid><dc:creator><![CDATA[schmidm6]]></dc:creator><pubDate>Thu, 04 Jun 2009 14:17:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 14:27:04 GMT]]></title><description><![CDATA[<p>Kann ich nicht reproduzeren.</p>
<p>schmidm6 schrieb:</p>
<blockquote>
<p>Solange n &lt;=256 ist, funktioniert alles wunderbar, sobald n grösser wird, kann es vorkommen, dass nicht mehr alle Elemente in der MAP richtig definiert werden und es kommt zu einem Programm absturz.</p>
</blockquote>
<p>Was heißt denn &quot;nicht richtig definiert&quot;? Was für ein Absturz? Was sagt der Debugger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721118</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 04 Jun 2009 14:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 18:46:08 GMT]]></title><description><![CDATA[<p>Funktioniert bei dir der Code, den ich gepostet habe?</p>
<p>Ich verwende MinGW auf WinXP<br />
setze für n mal den Wert 628! Also z.B. n=628</p>
<p>es sollte nicht 627 zeilen ausgegeben werden, bei mir sind es jedes mal weniger als 620 ....!<br />
Das wäre falsch</p>
<p>Gruss und danke für deine Bemühungen<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721333</guid><dc:creator><![CDATA[schmidm6]]></dc:creator><pubDate>Thu, 04 Jun 2009 18:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:14:11 GMT]]></title><description><![CDATA[<p>Vll weil rand() auch mal die gleichen Werte liefert?<br />
Somit werden diese Werte in der map überschrieben und nicht hinzugefügt..</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721344</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:15:57 GMT]]></title><description><![CDATA[<p>Ehm, könnte es daran liegen?</p>
<pre><code class="language-cpp">for (uli i=1; i&lt;=n; i++) 
  randPermMap[rand()] = i;
</code></pre>
<p>Und du meintest eher:</p>
<pre><code class="language-cpp">for (uli i=1; i&lt;=n; i++) 
 randPermMap[i] = rand();
</code></pre>
<p>Edit: Mist, unskilled war schneller <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721346</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:19:11 GMT]]></title><description><![CDATA[<p>Der Fehler liegt in der Logik.</p>
<p>Der Sinn dieses Codes liegt im erstellen einer Funktion, die einen Vektor mit zufällig angeordneten Integern zurück gibt. Die Integer sind im Bereich von 1:n!<br />
Die zufällige Reihenfolge erzeuge ich, in dem im Map der Key mit einem Zufallswert gefüllt wird. Sobald das Map fertig erstellt ist, liegt dieses ja nach dem &quot;Key&quot; sortiert vor, also sind die Integer in einer mehr oder weniger<br />
zufälligen reihenfolge. Nur je grösser der Vektor wird, also n, umso eher wird es wahrscheinlich, dass zweimal dieselbe zufallszahl generiert wird. Diese werden im map jedoch nicht zugelassen. Daher sollte ich wohl eher multimap verwenden. Damit funktionierts auf jeden Fall.</p>
<p>Der Code:</p>
<pre><code class="language-cpp">#include &lt;ctime&gt;
#include &lt;vector&gt;
#include &lt;map&gt;
#include &lt;iostream&gt;

using namespace std;

int main()
{
    typedef unsigned long int uli;

    uli n=1024;

    // initialize random seed:
    srand ( time(NULL) );

    // init the map
    std::multimap&lt;uli,uli&gt; randPermMap;
    std::multimap&lt;uli,uli&gt;::iterator iter;

    for (uli i=1; i&lt;=n; i++)
        randPermMap.insert(pair&lt;uli,uli&gt;(rand(),i));

    uli j = 0;
    for(iter = randPermMap.begin(); iter != randPermMap.end(); iter++)
    {
        std::cout &lt;&lt; j &lt;&lt; &quot; map output 1: &quot; &lt;&lt; iter-&gt;first &lt;&lt; &quot; second: &quot; &lt;&lt; iter-&gt;second &lt;&lt; &quot;\n&quot;;
        j++    ;
    }

    return 0;
}
</code></pre>
<p>Besten Dank für die Hilfe</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721347</guid><dc:creator><![CDATA[schmidm6]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:19:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:22:19 GMT]]></title><description><![CDATA[<p>schmidm6 schrieb:</p>
<blockquote>
<p>es sollte nicht 627 zeilen ausgegeben werden, bei mir sind es jedes mal weniger als 620 ....!<br />
Das wäre falsch</p>
</blockquote>
<p>Dann erklär mir mal was du hiermit tun willst:</p>
<pre><code class="language-cpp">randPermMap[rand()] = i;
</code></pre>
<p>Du willst also eine laufende Nummer mit einen Zufälligen Key setzen. Das rand() auch gleiche Ziffern ausspucken kann, ist dir hoffentlich auch klar.</p>
<p>Wenn du statt dessen:</p>
<pre><code class="language-cpp">randPermMap[i] = rand();
</code></pre>
<p>geschrieben hättest, würde auch deine gewünschte Anzahl herauskommen.</p>
<p>(Getestet habe ich das Programm unter VS2010 Beta, mit dem gleichen Ergebnis wie du auch erlebt hast: Der Zufallsgenerator hat einfach mehrmals gleiche Zahlen ausgespuckt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721352</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:22:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:26:15 GMT]]></title><description><![CDATA[<p>[offtopic]<br />
VS2010 Beta</p>
<p>lohnt sich die beta schon oder sollte man besser bei der VS9 bleiben?<br />
gibts die beta mittlerweile iwo legal zu dln? ^^<br />
[/offtopic]</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721354</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:36:06 GMT]]></title><description><![CDATA[<p>schmidm6 schrieb:</p>
<blockquote>
<p>Der Sinn dieses Codes liegt im erstellen einer Funktion, die einen Vektor mit zufällig angeordneten Integern zurück gibt.</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;vector&gt;

using namespace std;

int main()
{
    std::size_t count = 1000;
	std::vector&lt;std::size_t&gt; valueList;
	valueList.reserve(1000);

	for(std::size_t i=1; i&lt;=count; ++i)
        valueList.push_back(i);
	std::random_shuffle(valueList.begin(), valueList.end());
	std::copy(valueList.begin(), valueList.end(), std::ostream_iterator&lt;std::size_t&gt;(std::cout, &quot;\n&quot;));

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1721362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721362</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Thu, 04 Jun 2009 19:41:30 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>[offtopic]<br />
VS2010 Beta</p>
<p>lohnt sich die beta schon oder sollte man besser bei der VS9 bleiben?<br />
gibts die beta mittlerweile iwo legal zu dln? ^^<br />
[/offtopic]</p>
<p>bb</p>
</blockquote>
<p><a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx" rel="nofollow">http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx</a><br />
Microsoft Download-Seite (VS2010)</p>
<p>Meiner Meinung nach ist es aber zumindest im C++ Bereich ein Rückschritt (Zumindest empfinde ich die Fehlermeldungen im C++ Bereich teils als kryptischer als je zuvor). Achtung: Unter Umständen musst du einen Ordner im 4er Framework umkopieren (Wenn er Dateien nicht findet, einfach mal eine Ebene höher schauen wie der Ordner heißt).</p>
<p>Ansonsten ist mein Ersteindruck nicht schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721367</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:41:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Fri, 05 Jun 2009 04:44:24 GMT]]></title><description><![CDATA[<p>Es tauchte zwischendurch nochmals die Frage auf, für was das sein Soll.</p>
<p>Also, Ziel ist es, am Ende einen Vektor zu haben (einen MTL4-Vektor, siehe<br />
<a href="http://www.osl.iu.edu/research/mtl/mtl4/" rel="nofollow">http://www.osl.iu.edu/research/mtl/mtl4/</a>) mit Integer-Werten, die zufällig angeordnet sind und im Bereich 0 bis n liegen.<br />
Darum habe ich den &quot;Key&quot; mit Zufallszahlen generiert und mit einem fortlaufenden Integer gefüllt. Das Map sortiert sich ja selber nach den &quot;Keys&quot;, wodurch sich die Reihenfolge der Integer ändert.</p>
<p>Aber wie schon bemerkt, habe ich vergessen, dass rand auch mal die gleiche Zahl bringen kann. Daher habe ich den Code auf multimap geändert und damit scheints zu funktionieren.</p>
<p>Besten Dank noch für den hinzugefügten Code, den werde ich mir gerne heute Abend zu gemüte führen, um wirklich zu verstehen, was da geschieht.</p>
<p>Gruss und schönen Tag</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721501</guid><dc:creator><![CDATA[schmidm6]]></dc:creator><pubDate>Fri, 05 Jun 2009 04:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Anzahl Elementen in einer Map on Fri, 05 Jun 2009 06:13:13 GMT]]></title><description><![CDATA[<p>schmidm6 schrieb:</p>
<blockquote>
<p>Besten Dank noch für den hinzugefügten Code, den werde ich mir gerne heute Abend zu gemüte führen, um wirklich zu verstehen, was da geschieht.</p>
</blockquote>
<p>Wichtig an meinen Code ist im wesentlichen:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
</code></pre>
<p>Für die Algorithmen die, die Standardbibliothek von Haus aus mitbringt. Und dazu gehört auch ein Algorithmus der einen Container zufällig anordned, namens random_shuffle. Die Übergabe ist der Bereich, der durcheinander gewürfelt werden soll.</p>
<pre><code class="language-cpp">std::random_shuffle(valueList.begin(), valueList.end());
</code></pre>
<p>Und zwar wird der Bereich wie in den Algorithmen üblich mit dem Iterator auf das erste Element des Zielbereiches begonnen, und mit dem Element, das eins nach dem Ende des Zielbereiches liegt (end() liefert das Element HINTER dem Letzten Element) abgeschlossen.</p>
<p>Die sonstigen Zeilen dienen nur dem füllen des Containers mit Werten, und der Ausgabe (std::copy in Zusammenhang mit dem std::ostream_iterator). std::size_t ist ein typedef auf einen sehr großen unsigned-Typ.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721512</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 05 Jun 2009 06:13:13 GMT</pubDate></item></channel></rss>