<?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[Probleme bei der Umsetzung einer Heuristik]]></title><description><![CDATA[<p>Hallo liebe Forennutzer,</p>
<p>ich habe Probleme die Greedy Random Adaptive Search Procedure Heuristik in c++ umzusetzen. Und zwar habe ich bei Folgendem besonders Schwierigkeiten. Es soll eine Reihenfolge von Jobs gebildet werde. Welcher Job ausgewählt wird als jeweils nächster hängt davon ab, wie sich der makespan (also die gesamte Bearbeitungszeit der bisher vorhandenen Jobs) durch Hinzufügen des jeweiligen Jobs erhöht. Entsprechend einer Funktion kommen bestimmte Jobs in Betracht und werden zufällig ausgewählt. Ich schaffe es jedoch nicht richtig, die Startlösung zu konstruieren, da ich immer Fehler entstehen bei der Berechnung des aktuellen Makespans ausgehend von den bisher ausgewählten Jobs.<br />
Ich habe 5 Maschinen und 20 Jobs, die auf diesen Maschinen ausgeführt werden sollen.</p>
<p>Mein bisheriger Code sieht folgendermaßen aus und funktioniert bis zum 2. &lt;schritt, ab da gibt es Probleme und irgendwann geht es gar nciht mehr.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;numeric&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
#include &lt;sstream&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;cstdlib&gt;

using namespace std;

void width(vector&lt;int&gt;&amp;Makespan, double alpha, vector&lt;int&gt;&amp;avjobs, vector &lt;int&gt;&amp;RCL, int Durchlauf)
{
	int min = *min_element(Makespan.begin()+Durchlauf,Makespan.end()); // Finden des Minimums und Maximums des Vektors Makespan
	int max = *max_element(Makespan.begin()+Durchlauf,Makespan.end());
	cout &lt;&lt; &quot;Min ist &quot; &lt;&lt; min &lt;&lt; endl;
	cout &lt;&lt; &quot;Max ist &quot; &lt;&lt; max &lt;&lt; endl;
	double width;
	width=alpha*(max-min);
	cout &lt;&lt; width &lt;&lt; endl;
	cout &lt;&lt; &quot;Die jobs: &quot;;
	for (int i=0+Durchlauf; i&lt;avjobs.size();i++) 
	{
		double neu;
		neu=min+width;
		if (Makespan[i] &lt; neu)
		{
			RCL.push_back(avjobs[i-Durchlauf]);
		}
	}
}

void CompletionM1 (vector &lt;int&gt; &amp;proctimes, vector &lt;int&gt; &amp;Cm1, vector &lt;int&gt; &amp;Cm2, int nbrmach, int jobnbr, int Durchlauf)
{
	int summeneu, summe=0; int jobs; int neu;

	if (Durchlauf==0)
	{
		Cm1[0+nbrmach*Durchlauf]=(Cm1[0]+proctimes[(jobnbr)*nbrmach]);

		for (jobs=1; jobs &lt; 5; jobs++)
	{
		neu = Cm1[jobs];
		summeneu = max (neu, Cm1[jobs-1]) + proctimes [(jobnbr*nbrmach)+jobs];
		summe = summeneu;
		Cm1[jobs+nbrmach*Durchlauf]=(summeneu);
	}
	Cm2.push_back(Cm1.back());

	} else

		{	Cm1[0+nbrmach*Durchlauf]=(Cm1[0]+proctimes[(jobnbr)*nbrmach]);

	for (jobs=1; jobs &lt; 5; jobs++)
	{	
		neu = Cm1[jobs+(nbrmach*Durchlauf)-5];
		summeneu = max (neu, Cm1[jobs+(nbrmach*Durchlauf)-1]) + proctimes [(jobnbr*nbrmach)+jobs];
		summe = summeneu;
		Cm1[jobs+nbrmach*Durchlauf]=(summeneu);
	}
	Cm2.push_back(Cm1.back());

//}
}
}

int main ()
{
	vector &lt;int&gt; proctimes;
	srand(time(NULL));

ifstream infile1  (&quot;C:/Users/ich/Documents/Uni/C++/Taillard20_5.txt&quot;);
  if(!infile1.is_open()){ 
    cerr &lt;&lt; &quot;Fehler beim Oeffnen der Datei.\n&quot;; 
    return -1; 
  } 
  // drei Zeilen konsumieren und ignorieren 
  for(int i=0; i&lt;3; ++i) 
    infile1.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n'); 

	string line1;

	while ( getline (infile1,line1) )
    {
      stringstream s (line1);
	  int tmp;

	  while (s&gt;&gt;tmp) {
		proctimes.push_back(tmp);  
    }
}

	infile1.clear(); // Fehlerstatus auf 0 setzen
	infile1.close(); // File schließen

	// +++++++++++++++++++++++++Vektoren+++++++++++++++++++++++++++++++++++++++
	vector &lt;int&gt; neu; int nbrjobs=20; int nbrmach=5;

	for (int i=0; i&lt;nbrjobs; i++) // Vektorelemente so anordnen, als wären sie spaltenweise eingelesen worden
	{
		neu.push_back(proctimes.at(i)); neu.push_back(proctimes.at(i+20)); neu.push_back(proctimes.at(i+40)); neu.push_back(proctimes.at(i+60)); neu.push_back(proctimes.at(i+80));
	}

	/*copy(neu.begin(), neu.end(), ostream_iterator&lt;int&gt;(cout, &quot; &quot;)); */

	cout &lt;&lt; endl;

	vector &lt;int&gt; Completion; vector &lt;int&gt; Makespan; vector &lt;int&gt; avjobs;

	for (int i=1; i&lt;=5; i++) Completion.push_back(0);

	/*for (int i=1; i&lt;=20; i++) Makespan.push_back(0);*/

	for (int i=1; i&lt;=20; i++) avjobs.push_back(i); // Füllen des Vektors avjobs mit allen verfügbaren Jobs

	for (int i=0; i&lt;avjobs.size(); i++) // Für alle verfügbaren Jobs die jeweiligen Completiontimes berechnen und die Endergebnisse der einzelnen Jobs im Vektor Makespan speichern
	{
	CompletionM1(neu, Completion, Makespan, 5, i, 0);
	Completion.clear();
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);
	}

	cout&lt;&lt; &quot;Vektor Completion: &quot;; // Kontrollausgabe alles erzeugten Completiontimes mit Zwischensummen

	for (int i=0; i&lt;Completion.size();i++)
	{
		cout &lt;&lt; Completion [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;Completiontimes aller 20 Jobs: &quot;;
	for (int i=0; i&lt;Makespan.size();i++)
	{
		cout &lt;&lt; Makespan [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	vector &lt;int&gt; RCL;
	width(Makespan, 0.5, avjobs, RCL,0);

	for (int i=0;i&lt;RCL.size();i++)
	{
		cout &lt;&lt; RCL[i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; &quot;liegen im Bereich.&quot;&lt;&lt;endl;
	int randI = rand() % RCL.size();
	cout &lt;&lt; &quot;Job: &quot; &lt;&lt; RCL[randI] &lt;&lt;endl;
	vector&lt;int&gt;Lsg;
	Lsg.push_back(RCL[randI]);

	for (int i=0; i&lt;Lsg.size();i++)
	{ cout &lt;&lt; Lsg[i];}

	// Löschen des i-ten Elementes aus den verfügbaren Jobs
	avjobs.erase (avjobs.begin()+(RCL[randI])-1);

	Makespan.clear();
	CompletionM1(neu, Completion, Makespan, 5, RCL[randI]-1, 0);  // Die gefundene Lösung in den Vektor Completion

	for (int i=1; i&lt;=5; i++) Completion.push_back(0);

  RCL.clear();

  for (int i=0; i&lt;avjobs.size();i++)
  {
  cout &lt;&lt; avjobs[i] &lt;&lt; &quot; &quot;;
  }

  // ++++++++++++++++++++++++++++++++++++++Durchgang 2+++++++++++++++++++++++++++++++++++++

  for (int j=1;j&lt;nbrjobs;j++)
  {
	for (int i=0; i&lt;avjobs.size(); i++) // Für alle verfügbaren Jobs die jeweiligen Completiontimes berechnen und die Endergebnisse der einzelnen Jobs im Vektor Makespan speichern
	{
		int k=avjobs[i]-1;
	CompletionM1(neu, Completion, Makespan, 5, k, j);
	/*Completion.erase(Completion.begin()+5, Completion.end());
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);*/
	}

	cout&lt;&lt; &quot;Vektor Completion: &quot;; // Kontrollausgabe alles erzeugten Completiontimes mit Zwischensummen

	for (int i=0; i&lt;Completion.size();i++)
	{
		cout &lt;&lt; Completion [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;Completiontimes aller 20 Jobs: &quot;;
	for (int i=0; i&lt;Makespan.size();i++)
	{
		cout &lt;&lt; Makespan [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	width(Makespan, 0.5, avjobs, RCL,j);

	for (int i=0;i&lt;RCL.size();i++)
	{
		cout &lt;&lt; RCL[i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; &quot;liegen im Bereich.&quot;&lt;&lt;endl;
	randI = rand() % RCL.size();
	cout &lt;&lt; &quot;Job: &quot; &lt;&lt; RCL[randI] &lt;&lt;endl;

	Lsg.push_back(RCL[randI]);

	for (int i=0; i&lt;Lsg.size();i++)
	{ cout &lt;&lt; Lsg[i];}

	// Löschen des i-ten Elementes aus den verfügbaren Jobs
	avjobs.erase (avjobs.begin()+(RCL[randI])-1);
	Makespan.erase(Makespan.begin()+1,Makespan.end());
	Completion.erase(Completion.begin()+5,Completion.end());
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);
	CompletionM1(neu, Completion, Makespan, 5, RCL[randI]-1, 1);  // Die gefundene Lösung in den Vektor Completion
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);

  RCL.clear();

  for (int i=0; i&lt;avjobs.size();i++)
  {
  cout &lt;&lt; avjobs[i] &lt;&lt; &quot; &quot;;
  }
  for (int i=0; i&lt;Completion.size();i++)
  {
  cout &lt;&lt; Completion[i] &lt;&lt; &quot; &quot;;
  }
  for (int i=0; i&lt;Makespan.size();i++)
  {
  cout &lt;&lt; Makespan[i] &lt;&lt; &quot; &quot;;
  }
  }
  }
</code></pre>
<p>Wahrscheinlich ist die Aufgabe zu komplex, um mal schnell drüber zu schauen, aber vllt kann mir ja doch jmd behilflich sein. Ich würde mich freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312877/probleme-bei-der-umsetzung-einer-heuristik</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 12:53:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312877.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jan 2013 11:58:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme bei der Umsetzung einer Heuristik on Wed, 16 Jan 2013 11:58:36 GMT]]></title><description><![CDATA[<p>Hallo liebe Forennutzer,</p>
<p>ich habe Probleme die Greedy Random Adaptive Search Procedure Heuristik in c++ umzusetzen. Und zwar habe ich bei Folgendem besonders Schwierigkeiten. Es soll eine Reihenfolge von Jobs gebildet werde. Welcher Job ausgewählt wird als jeweils nächster hängt davon ab, wie sich der makespan (also die gesamte Bearbeitungszeit der bisher vorhandenen Jobs) durch Hinzufügen des jeweiligen Jobs erhöht. Entsprechend einer Funktion kommen bestimmte Jobs in Betracht und werden zufällig ausgewählt. Ich schaffe es jedoch nicht richtig, die Startlösung zu konstruieren, da ich immer Fehler entstehen bei der Berechnung des aktuellen Makespans ausgehend von den bisher ausgewählten Jobs.<br />
Ich habe 5 Maschinen und 20 Jobs, die auf diesen Maschinen ausgeführt werden sollen.</p>
<p>Mein bisheriger Code sieht folgendermaßen aus und funktioniert bis zum 2. &lt;schritt, ab da gibt es Probleme und irgendwann geht es gar nciht mehr.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;numeric&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
#include &lt;sstream&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;cstdlib&gt;

using namespace std;

void width(vector&lt;int&gt;&amp;Makespan, double alpha, vector&lt;int&gt;&amp;avjobs, vector &lt;int&gt;&amp;RCL, int Durchlauf)
{
	int min = *min_element(Makespan.begin()+Durchlauf,Makespan.end()); // Finden des Minimums und Maximums des Vektors Makespan
	int max = *max_element(Makespan.begin()+Durchlauf,Makespan.end());
	cout &lt;&lt; &quot;Min ist &quot; &lt;&lt; min &lt;&lt; endl;
	cout &lt;&lt; &quot;Max ist &quot; &lt;&lt; max &lt;&lt; endl;
	double width;
	width=alpha*(max-min);
	cout &lt;&lt; width &lt;&lt; endl;
	cout &lt;&lt; &quot;Die jobs: &quot;;
	for (int i=0+Durchlauf; i&lt;avjobs.size();i++) 
	{
		double neu;
		neu=min+width;
		if (Makespan[i] &lt; neu)
		{
			RCL.push_back(avjobs[i-Durchlauf]);
		}
	}
}

void CompletionM1 (vector &lt;int&gt; &amp;proctimes, vector &lt;int&gt; &amp;Cm1, vector &lt;int&gt; &amp;Cm2, int nbrmach, int jobnbr, int Durchlauf)
{
	int summeneu, summe=0; int jobs; int neu;

	if (Durchlauf==0)
	{
		Cm1[0+nbrmach*Durchlauf]=(Cm1[0]+proctimes[(jobnbr)*nbrmach]);

		for (jobs=1; jobs &lt; 5; jobs++)
	{
		neu = Cm1[jobs];
		summeneu = max (neu, Cm1[jobs-1]) + proctimes [(jobnbr*nbrmach)+jobs];
		summe = summeneu;
		Cm1[jobs+nbrmach*Durchlauf]=(summeneu);
	}
	Cm2.push_back(Cm1.back());

	} else

		{	Cm1[0+nbrmach*Durchlauf]=(Cm1[0]+proctimes[(jobnbr)*nbrmach]);

	for (jobs=1; jobs &lt; 5; jobs++)
	{	
		neu = Cm1[jobs+(nbrmach*Durchlauf)-5];
		summeneu = max (neu, Cm1[jobs+(nbrmach*Durchlauf)-1]) + proctimes [(jobnbr*nbrmach)+jobs];
		summe = summeneu;
		Cm1[jobs+nbrmach*Durchlauf]=(summeneu);
	}
	Cm2.push_back(Cm1.back());

//}
}
}

int main ()
{
	vector &lt;int&gt; proctimes;
	srand(time(NULL));

ifstream infile1  (&quot;C:/Users/ich/Documents/Uni/C++/Taillard20_5.txt&quot;);
  if(!infile1.is_open()){ 
    cerr &lt;&lt; &quot;Fehler beim Oeffnen der Datei.\n&quot;; 
    return -1; 
  } 
  // drei Zeilen konsumieren und ignorieren 
  for(int i=0; i&lt;3; ++i) 
    infile1.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n'); 

	string line1;

	while ( getline (infile1,line1) )
    {
      stringstream s (line1);
	  int tmp;

	  while (s&gt;&gt;tmp) {
		proctimes.push_back(tmp);  
    }
}

	infile1.clear(); // Fehlerstatus auf 0 setzen
	infile1.close(); // File schließen

	// +++++++++++++++++++++++++Vektoren+++++++++++++++++++++++++++++++++++++++
	vector &lt;int&gt; neu; int nbrjobs=20; int nbrmach=5;

	for (int i=0; i&lt;nbrjobs; i++) // Vektorelemente so anordnen, als wären sie spaltenweise eingelesen worden
	{
		neu.push_back(proctimes.at(i)); neu.push_back(proctimes.at(i+20)); neu.push_back(proctimes.at(i+40)); neu.push_back(proctimes.at(i+60)); neu.push_back(proctimes.at(i+80));
	}

	/*copy(neu.begin(), neu.end(), ostream_iterator&lt;int&gt;(cout, &quot; &quot;)); */

	cout &lt;&lt; endl;

	vector &lt;int&gt; Completion; vector &lt;int&gt; Makespan; vector &lt;int&gt; avjobs;

	for (int i=1; i&lt;=5; i++) Completion.push_back(0);

	/*for (int i=1; i&lt;=20; i++) Makespan.push_back(0);*/

	for (int i=1; i&lt;=20; i++) avjobs.push_back(i); // Füllen des Vektors avjobs mit allen verfügbaren Jobs

	for (int i=0; i&lt;avjobs.size(); i++) // Für alle verfügbaren Jobs die jeweiligen Completiontimes berechnen und die Endergebnisse der einzelnen Jobs im Vektor Makespan speichern
	{
	CompletionM1(neu, Completion, Makespan, 5, i, 0);
	Completion.clear();
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);
	}

	cout&lt;&lt; &quot;Vektor Completion: &quot;; // Kontrollausgabe alles erzeugten Completiontimes mit Zwischensummen

	for (int i=0; i&lt;Completion.size();i++)
	{
		cout &lt;&lt; Completion [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;Completiontimes aller 20 Jobs: &quot;;
	for (int i=0; i&lt;Makespan.size();i++)
	{
		cout &lt;&lt; Makespan [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	vector &lt;int&gt; RCL;
	width(Makespan, 0.5, avjobs, RCL,0);

	for (int i=0;i&lt;RCL.size();i++)
	{
		cout &lt;&lt; RCL[i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; &quot;liegen im Bereich.&quot;&lt;&lt;endl;
	int randI = rand() % RCL.size();
	cout &lt;&lt; &quot;Job: &quot; &lt;&lt; RCL[randI] &lt;&lt;endl;
	vector&lt;int&gt;Lsg;
	Lsg.push_back(RCL[randI]);

	for (int i=0; i&lt;Lsg.size();i++)
	{ cout &lt;&lt; Lsg[i];}

	// Löschen des i-ten Elementes aus den verfügbaren Jobs
	avjobs.erase (avjobs.begin()+(RCL[randI])-1);

	Makespan.clear();
	CompletionM1(neu, Completion, Makespan, 5, RCL[randI]-1, 0);  // Die gefundene Lösung in den Vektor Completion

	for (int i=1; i&lt;=5; i++) Completion.push_back(0);

  RCL.clear();

  for (int i=0; i&lt;avjobs.size();i++)
  {
  cout &lt;&lt; avjobs[i] &lt;&lt; &quot; &quot;;
  }

  // ++++++++++++++++++++++++++++++++++++++Durchgang 2+++++++++++++++++++++++++++++++++++++

  for (int j=1;j&lt;nbrjobs;j++)
  {
	for (int i=0; i&lt;avjobs.size(); i++) // Für alle verfügbaren Jobs die jeweiligen Completiontimes berechnen und die Endergebnisse der einzelnen Jobs im Vektor Makespan speichern
	{
		int k=avjobs[i]-1;
	CompletionM1(neu, Completion, Makespan, 5, k, j);
	/*Completion.erase(Completion.begin()+5, Completion.end());
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);*/
	}

	cout&lt;&lt; &quot;Vektor Completion: &quot;; // Kontrollausgabe alles erzeugten Completiontimes mit Zwischensummen

	for (int i=0; i&lt;Completion.size();i++)
	{
		cout &lt;&lt; Completion [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	cout &lt;&lt; &quot;Completiontimes aller 20 Jobs: &quot;;
	for (int i=0; i&lt;Makespan.size();i++)
	{
		cout &lt;&lt; Makespan [i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; endl;

	width(Makespan, 0.5, avjobs, RCL,j);

	for (int i=0;i&lt;RCL.size();i++)
	{
		cout &lt;&lt; RCL[i] &lt;&lt; &quot; &quot;;
	}
	cout &lt;&lt; &quot;liegen im Bereich.&quot;&lt;&lt;endl;
	randI = rand() % RCL.size();
	cout &lt;&lt; &quot;Job: &quot; &lt;&lt; RCL[randI] &lt;&lt;endl;

	Lsg.push_back(RCL[randI]);

	for (int i=0; i&lt;Lsg.size();i++)
	{ cout &lt;&lt; Lsg[i];}

	// Löschen des i-ten Elementes aus den verfügbaren Jobs
	avjobs.erase (avjobs.begin()+(RCL[randI])-1);
	Makespan.erase(Makespan.begin()+1,Makespan.end());
	Completion.erase(Completion.begin()+5,Completion.end());
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);
	CompletionM1(neu, Completion, Makespan, 5, RCL[randI]-1, 1);  // Die gefundene Lösung in den Vektor Completion
	for (int i=1; i&lt;=5; i++) Completion.push_back(0);

  RCL.clear();

  for (int i=0; i&lt;avjobs.size();i++)
  {
  cout &lt;&lt; avjobs[i] &lt;&lt; &quot; &quot;;
  }
  for (int i=0; i&lt;Completion.size();i++)
  {
  cout &lt;&lt; Completion[i] &lt;&lt; &quot; &quot;;
  }
  for (int i=0; i&lt;Makespan.size();i++)
  {
  cout &lt;&lt; Makespan[i] &lt;&lt; &quot; &quot;;
  }
  }
  }
</code></pre>
<p>Wahrscheinlich ist die Aufgabe zu komplex, um mal schnell drüber zu schauen, aber vllt kann mir ja doch jmd behilflich sein. Ich würde mich freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290224</guid><dc:creator><![CDATA[beginner58]]></dc:creator><pubDate>Wed, 16 Jan 2013 11:58:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei der Umsetzung einer Heuristik on Wed, 16 Jan 2013 13:45:23 GMT]]></title><description><![CDATA[<p>Ohne Eingabedatei ist viel Spekulation dabei.<br />
Besonders, wenn Du beschreibst:</p>
<p>beginner58 schrieb:</p>
<blockquote>
<p>funktioniert bis zum 2. &lt;schritt, ab da gibt es Probleme und irgendwann geht es gar nciht mehr</p>
</blockquote>
<p>Ich habe mir gerade mal eine Eingabedatei aus 23 mal der Zahl 5 gebaut - und prompt flog mir ein subscript ( <code>at()</code> ) um die Ohren...</p>
<p>Diese Zugriffe auf vermeintlich vorhandene Vektorelemente, sind auf jeden Fall eine dankbare Quelle für Abstürze.</p>
<p>Es ist auch ein rechter Spaghetticode geworden... ein paar mehr Funktionen wären gut, z.B. für die Ausgabe eines <code>std::vectors</code> auf <code>cout</code> .<br />
Mehr Struktur u. weniger Zeilen machen das debuggen leichter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290257</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 16 Jan 2013 13:45:23 GMT</pubDate></item></channel></rss>