<?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[Programm endet viel zu spät]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Programm geschrieben, das so weit funktioniert wie es soll. Allerdings endet es nicht bzw. nur sehr spät. Und zwar taucht am Ende eines Programms im Konsolenfenster normalerweise immer &quot;Drücken Sie eine beliebige Taste ...&quot; auf. Aber in meinem Programm taucht es erst nach einigen Minuten auf. Selbst wenn der eigentliche Ablauf schon längst fertig ist. Nun weiß ich nicht woran es liegt. Der Computer rechnet noch irgendwas. Nur was? Die Zeit, die ich bis zum &quot;Drücken Sie eine beliebige Taste ... &quot; warte, dauert auch länger, je mehr Objekte ich verarbeite (ich speicher mehrere Objekte in einer std::unordered_map ab). Mache ich vergleichsweise wenig, endet das Programm sofort. Mache ich 100 mal mehr, muss ich endlos lange warten, auch wenn die letzte Zeile von meiner test_methode() schon längst erreicht ist. Was auch auffällt ist, dass ich dann nicht sofort zur aufrufenden main Methode springe, sondern erst nach dem langen Warten...</p>
<p>Kann mir jemand sagen woran das liegt oder liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286723/programm-endet-viel-zu-spät</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 20:32:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286723.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 May 2011 12:41:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 12:41:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Programm geschrieben, das so weit funktioniert wie es soll. Allerdings endet es nicht bzw. nur sehr spät. Und zwar taucht am Ende eines Programms im Konsolenfenster normalerweise immer &quot;Drücken Sie eine beliebige Taste ...&quot; auf. Aber in meinem Programm taucht es erst nach einigen Minuten auf. Selbst wenn der eigentliche Ablauf schon längst fertig ist. Nun weiß ich nicht woran es liegt. Der Computer rechnet noch irgendwas. Nur was? Die Zeit, die ich bis zum &quot;Drücken Sie eine beliebige Taste ... &quot; warte, dauert auch länger, je mehr Objekte ich verarbeite (ich speicher mehrere Objekte in einer std::unordered_map ab). Mache ich vergleichsweise wenig, endet das Programm sofort. Mache ich 100 mal mehr, muss ich endlos lange warten, auch wenn die letzte Zeile von meiner test_methode() schon längst erreicht ist. Was auch auffällt ist, dass ich dann nicht sofort zur aufrufenden main Methode springe, sondern erst nach dem langen Warten...</p>
<p>Kann mir jemand sagen woran das liegt oder liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063598</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 12:41:20 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 12:48:32 GMT]]></title><description><![CDATA[<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Kann mir jemand sagen woran das liegt oder liegen könnte?</p>
</blockquote>
<p>Ein Debug-Heap und ein Speicherloch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063603</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 12:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 13:06:00 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Kann mir jemand sagen woran das liegt oder liegen könnte?</p>
</blockquote>
<p>Ein Debug-Heap und ein Speicherloch.</p>
</blockquote>
<p>Kannst du mir das erklären? Ich verstehe leider nicht worauf du hinaus willst.</p>
<p>Ich habe ein Programm geschrieben, wie ich es auch in Java getan hätte. Wobei ich nirgends manuell Speicher angefordert oder freigegeben habe. Darum verstehe ich nicht wie es dazu kommen kann. <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/2063608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063608</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 13:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 13:22:32 GMT]]></title><description><![CDATA[<p>Wenn Du selber nicht</p>
<pre><code class="language-cpp">new
</code></pre>
<p>geschrieben hast, wird es was anderes sein.<br />
Vielleicht eine verkettete Liste, die mit Dutzenden von Millionen Objekten befüllt wurde und bei Programmende zerstört wird. Kann vielleicht auch passieren, wenn die Hash-Funktion kaputt ist und viele Objekte den gleichen Hash-Wert annehmen. Oder wenn viele Objekte hinzugefügt werden, obwohl sie schon drin sein. Das würde auch erklären, daß trozdem keine langen Suchzeiten entstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063614</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 13:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 13:32:16 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Wenn Du selber nicht</p>
<pre><code class="language-cpp">new
</code></pre>
<p>geschrieben hast, wird es was anderes sein.<br />
Vielleicht eine verkettete Liste, die mit Dutzenden von Millionen Objekten befüllt wurde und bei Programmende zerstört wird. Kann vielleicht auch passieren, wenn die Hash-Funktion kaputt ist und viele Objekte den gleichen Hash-Wert annehmen. Oder wenn viele Objekte hinzugefügt werden, obwohl sie schon drin sein. Das würde auch erklären, daß trozdem keine langen Suchzeiten entstehen.</p>
</blockquote>
<p>Ich habe absichtlich kein new benutzt, da ich zunächst nur eine std::unordered_map füllen und keine unbeabsichtigten Fehler produzieren wollte.</p>
<p>Meine Hashfunktion ist wohl ziemlich schlecht (ich möchte (vorerst) 2-dimensionale Koordinaten abspeichern und multipliziere diese einfach mit 2 verschieden großen Primzahlen). Trotzdem werden meine Objekte relativ gut in der Hashtabelle verteilt (in den meisten Buckets sind nur höchstens 4 Objekte, bei recht großem Füllgrad).</p>
<p>Verkettete Listen benutze ich nicht. Oder meinst du, diese werden in den Buckets benutzt? Aber dort befinden sich ja auch nur höchstens 4 Elemente.</p>
<p>Dutzende von Millionen Einträge wären auch schön. Das Programm scheitert bereits bei einer Viertelmillionen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063619</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 13:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:05:26 GMT]]></title><description><![CDATA[<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Meine Hashfunktion ist wohl ziemlich schlecht (ich möchte (vorerst) 2-dimensionale Koordinaten abspeichern und multipliziere diese einfach mit 2 verschieden großen Primzahlen).</p>
</blockquote>
<p>Die ist sehr gut, würde ich meinen (außer zufällig ist p*k==1 mit kleinem k oder so).</p>
<p>Also versagt hier meine Kristallkugel. Ich habe keine weitere Vermutung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063641</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 14:05:26 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:09:31 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Meine Hashfunktion ist wohl ziemlich schlecht (ich möchte (vorerst) 2-dimensionale Koordinaten abspeichern und multipliziere diese einfach mit 2 verschieden großen Primzahlen).</p>
</blockquote>
<p>Die ist sehr gut, würde ich meinen (außer zufällig ist p*k==1 mit kleinem k oder so).</p>
<p>Also versagt hier meine Kristallkugel. Ich habe keine weitere Vermutung.</p>
</blockquote>
<p>Ich danke dir trotzdem vielmals.</p>
<p>Ich glaube ich poste gleich mal ein bisschen Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063643</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 14:09:31 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:11:50 GMT]]></title><description><![CDATA[<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Verkettete Listen benutze ich nicht. Oder meinst du, diese werden in den Buckets benutzt? Aber dort befinden sich ja auch nur höchstens 4 Elemente.</p>
<p>Dutzende von Millionen Einträge wären auch schön. Das Programm scheitert bereits bei einer Viertelmillionen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Ähm. Es läuft eine Stunde lang und macht tolle Sachen und sammelt dabei eine viertel Million Objekte? Das Löschen dieser viertel Million Objekte könnte viel Zeit brauchen. Ja, ich meine die verketteten Listen von der Hashtable.<br />
Mal abschätzen...<br />
Pro Objekt werden mindestens 32 Bytes Speicher benutzt. Macht 8MB. Das ist ja gar nichts.<br />
Mal ein delete mit 100 Takten ansetzen. Macht 25000000 Takte, das ist nur ein viertel Sekündchen.<br />
Es sollte keinen Ärger geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063645</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 14:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:19:46 GMT]]></title><description><![CDATA[<p>Nur um ganz sicher zu sein: Der Compiler ist schon irgendwie ein bisschen auf optimieren eingestellt?</p>
<p>Nicht dass es am Ende alles daran liegt, dass du eine furchtbar lahme Debugversion eines Containers benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063651</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 May 2011 14:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:30:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Nur um ganz sicher zu sein: Der Compiler ist schon irgendwie ein bisschen auf optimieren eingestellt?</p>
<p>Nicht dass es am Ende alles daran liegt, dass du eine furchtbar lahme Debugversion eines Containers benutzt.</p>
</blockquote>
<p>Muss man den irgendwie einstellen? Wie macht man das?</p>
<p>Ich habe Visual C++ 2008 Express installiert und nichts eingestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063656</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 14:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:41:41 GMT]]></title><description><![CDATA[<p>Ich poste einfach mal den Code. Wäre toll, wenn sich jemand die Zeit nehmen würde um ihn zu lesen. Er ist auch nicht schwer zu verstehen.</p>
<p>Das ist der Graph, in dem die unordered_map ist:</p>
<pre><code class="language-cpp">typedef unordered_map&lt;pair&lt;Zustand,Aktion&gt;,Zustand,meinHash&gt; my_map;

class Graph
{
public:
	Graph() { kanten.max_load_factor(1.1f); };

	void fuegeKanteHinzu(const Zustand&amp;, const Aktion&amp;, const Zustand&amp;) throw (...);
	void fuegeKanteHinzu_insecure(const Zustand&amp;, const Aktion&amp;, const Zustand&amp;);
	Zustand&amp; get(const Zustand&amp;, const Aktion&amp;) const throw (...);

//private:	
	my_map kanten;
};

void Graph::fuegeKanteHinzu_insecure(const Zustand &amp;von, const Aktion &amp;mit, const Zustand &amp;nach)
{
	//pair&lt;Zustand,Aktion&gt; p(von,mit);
	kanten.insert(my_map::value_type(make_pair(von,mit),nach));
};
</code></pre>
<p>So sieht ein Zustand aus:</p>
<pre><code class="language-cpp">class Zustand
{
public:
	Zustand(const int&amp; x, const int&amp; y) : k(x,y) { };
	Zustand(const Koordinate&amp; k) : k(k) { };
	Zustand() : k(0,0) { }; 
	~Zustand() {};

	inline int getHash() const;

	friend bool operator&lt;(const Zustand&amp;, const Zustand&amp;);
	friend bool operator==(const Zustand&amp;, const Zustand&amp;);
    friend ostream&amp; operator&lt;&lt;(ostream&amp;, const Zustand&amp;);
	friend Zustand&amp; operator+(const Zustand&amp;, const Aktion&amp;);
	friend Zustand&amp; operator+(const Zustand&amp;, const Zustand&amp;);

//private:
	Koordinate k;
};

inline int Zustand::getHash() const
{
	return k.getX()*5827 + k.getY()*1091;
};
</code></pre>
<p>Und das ist die main-Methode:</p>
<pre><code class="language-cpp">int _tmain(int argc, _TCHAR* argv[])
{
	cout &lt;&lt; &quot;BEGIN&quot; &lt;&lt; endl;
	graph_zeit_test();
	cout &lt;&lt; &quot;END&quot; &lt;&lt; endl;
	return 0;
};

void graph_zeit_test()
{
	__int64 ctr1 = 0, ctr2 = 0;
	Graph g;

	Aktion a(0,1), b(1,0), c(-1,0), d(0,-1);

	Zustand zz(-1,-1);
	QueryPerformanceCounter((LARGE_INTEGER *)&amp;ctr1);
	for (int x=0; x&lt;250; x++)
	{
		for (int y=0; y&lt;250; y++)
		{
			Zustand z(x,y);
			g.fuegeKanteHinzu(z,a,zz);
			g.fuegeKanteHinzu(z,b,zz);
			g.fuegeKanteHinzu(z,c,zz);
			g.fuegeKanteHinzu(z,d,zz);
		}
	}
	QueryPerformanceCounter((LARGE_INTEGER *)&amp;ctr2);
	cout &lt;&lt; &quot;Initialisierung:  &quot; &lt;&lt; (ctr2-ctr1) &lt;&lt; endl;
}
</code></pre>
<p>Die Methode graph_zeit_test() wird bis zur letzten Ausgabe ausgeführt.</p>
<p>Aber die letzte Ausgabe &quot;END&quot; in der main-Methode wird erst nach vielen Minuten ausgeführt..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063660</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 14:41:41 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:48:27 GMT]]></title><description><![CDATA[<p>Ich denke, Du meintest</p>
<pre><code class="language-cpp">kanten.max_load_factor(0.8f);
</code></pre>
<p>Der Code ist unverdächtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063662</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 14:48:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:57:31 GMT]]></title><description><![CDATA[<p>Sichern wir mal ab, daß im Destruktor vom Graphen die Zeit gefressen wird:</p>
<pre><code class="language-cpp">void graph_zeit_test()
{
	__int64 ctr1 = 0, ctr2 = 0;
{//neuer Block für g
	Graph g;

	Aktion a(0,1), b(1,0), c(-1,0), d(0,-1);

	Zustand zz(-1,-1);
	QueryPerformanceCounter((LARGE_INTEGER *)&amp;ctr1);
	for (int x=0; x&lt;250; x++)
	{
		for (int y=0; y&lt;250; y++)
		{
			Zustand z(x,y);
			g.fuegeKanteHinzu(z,a,zz);
			g.fuegeKanteHinzu(z,b,zz);
			g.fuegeKanteHinzu(z,c,zz);
			g.fuegeKanteHinzu(z,d,zz);
		}
	}
cout&lt;&lt;&quot;test1\n&quot;&lt;&lt;flush;
}//Ende neuer Block für g, g wird gelöscht. 
cout&lt;&lt;&quot;test2\n&quot;&lt;&lt;flush;
	QueryPerformanceCounter((LARGE_INTEGER *)&amp;ctr2);
	cout &lt;&lt; &quot;Initialisierung:  &quot; &lt;&lt; (ctr2-ctr1) &lt;&lt; endl;
}
</code></pre>
<p>So wird die Zeit zwischen test1 und test2 gefressen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063665</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 14:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:52:13 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Der Code ist unverdächtig.</p>
</blockquote>
<p>Eventuell ist ja in den fehlenden Teilen noch etwas versteckt. @Threadersteller: Kannst du noch die Definitionen von Aktion und Graph::fuegeKanteHinzu geben, so dass man das Beispiel selber compilieren kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063666</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 May 2011 14:52:13 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:52:36 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Ich denke, Du meintest</p>
<pre><code class="language-cpp">kanten.max_load_factor(0.8f);
</code></pre>
<p>Der Code ist unverdächtig.</p>
</blockquote>
<p>Hm? Wieso sollte ich 0.8f gemeint haben? Vorgegeben ist, so weit ich weiß, 4.0f, was mir viel zu viel schien. Darum habe ich 1.1f genommen.</p>
<p>Meinst du den letzten Satz ironisch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063667</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 14:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 14:55:58 GMT]]></title><description><![CDATA[<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Meinst du den letzten Satz ironisch?</p>
</blockquote>
<p>Nein, ich meinte mich daran zu erinnern, daß 0.8 gut wäre. Hängt aber viel zu stark von der Implementierung ab, als daß ich sagen könnte, 0.8 wäre bei Dir auch gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063669</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 15 May 2011 14:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 15:32:15 GMT]]></title><description><![CDATA[<p>Häng dich doch einfach mit dem Debugger ran und drück auf Pause, wenn es lang braucht, dann bist du genau da im Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063677</guid><dc:creator><![CDATA[pursche]]></dc:creator><pubDate>Sun, 15 May 2011 15:32:15 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 15:32:55 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Der Code ist unverdächtig.</p>
</blockquote>
<p>Eventuell ist ja in den fehlenden Teilen noch etwas versteckt. @Threadersteller: Kannst du noch die Definitionen von Aktion und Graph::fuegeKanteHinzu geben, so dass man das Beispiel selber compilieren kann?</p>
</blockquote>
<p>Das bringt leider nichts, weil ich noch die Operatoren etc. posten müsste.<br />
Soll ich das einfach mal machen?</p>
<p>Eine Aktion sind so aus:</p>
<pre><code class="language-cpp">class Aktion
{
public:
	Aktion(const int&amp; x, const int&amp; y) : k(x,y) { };
	Aktion(const Koordinate&amp; k) : k(k) { };
	Aktion() : k(0,0) {};
	~Aktion() {};

	inline int getHash() const;

	friend bool operator&lt;(const Aktion&amp;, const Aktion&amp;);
	friend bool operator==(const Aktion&amp;, const Aktion&amp;);

private:
	Koordinate k;
};

inline int Aktion::getHash() const
{
	return k.getX()*7159 + k.getY()*929;
};
</code></pre>
<p>Die eine Methode so:</p>
<pre><code class="language-cpp">void Graph::fuegeKanteHinzu(const Zustand &amp;von, const Aktion &amp;mit, const Zustand &amp;nach)
{
	pair&lt;Zustand,Aktion&gt; p(von,mit);
	my_map::const_iterator iter = kanten.find(p);
	if (iter != kanten.end())
	{
		if ((*iter).second == nach) throw KanteBereitsVorhandenException(von, mit, nach);
		else throw KantenKonfliktException(von, mit, (*iter).second, nach);
	}
	kanten.insert(my_map::value_type(p,nach));
};
</code></pre>
<p>Obwohl sich da, außer ein paar Milisekunden, nichts tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063679</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Sun, 15 May 2011 15:32:55 GMT</pubDate></item><item><title><![CDATA[Reply to Programm endet viel zu spät on Sun, 15 May 2011 16:30:30 GMT]]></title><description><![CDATA[<p>ichbineinnoob schrieb:</p>
<blockquote>
<p>Muss man den irgendwie einstellen? Wie macht man das?</p>
<p>Ich habe Visual C++ 2008 Express installiert und nichts eingestellt.</p>
</blockquote>
<p>Starte im Release-Modus, und starte ohne Debugging (das &quot;hohle&quot; grüne Dreieck).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2063701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2063701</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 15 May 2011 16:30:30 GMT</pubDate></item></channel></rss>