<?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[große mengen an variablen in 2-dim array]]></title><description><![CDATA[<p>Hallo ich habe einen Algorithmus, der mehrere zweidimensionale arrays in zweidimensionalen vectoren ablegen soll.<br />
falls man sich fragt, warum:<br />
jeder zweidimensionale array wird &quot;hintereinander&quot; in einem vector abgelegt, so dass ich mehrere &quot;matrizen&quot; speichern kann.</p>
<p>das sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">int i,j,count=0;
vector&lt;vector&lt;int&gt; &gt; v ; 
do
{
B3(T,m,Part2); // egal, was die macht, daran liegt nicht der fehler

do{
v.push_back(vector&lt;int&gt;());
B(T,m,Part2); // egal, was die macht, daran liegt nicht der fehler
for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        T2[i][j]=T[i][j];

for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        T3[i][j]=T2[i][j];    
linord(T2,m); // egal, was die macht, daran liegt nicht der fehler

for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        v[count].push_back(T2[i][j]);
c=0;
for(i=0;i&lt;m;i++)
    if(T3[i][i]==1)
        c++;

if(c&gt;1)
    {
    linord2(T3,m); // egal, was die macht, daran liegt nicht der fehler
    count++;
    v.push_back(vector&lt;int&gt;());
    for (i=0; i&lt;m; i++)
        for (j=0; j&lt;m; j++)
            v[count].push_back(T3[i][j]);
    }

abb=Btest(T,m,abb,Part2);
count++;

}while(abb==0);
</code></pre>
<p>T, T2 und T3 sind zweidimensionale Arrays, die ich in v[count] ablege und zwar so, dass ich die ganzen zeilen hintereinander anfüge, bei einer entsprechenden ausgabe ergeben sich wieder matritzen, so der plan :). jedoch können auch mehrere matrizen in einem vector abgelegt werden müssen.<br />
bis zu einer arraylänge 7 funktioniert das auch wunderbar, jedoch kommt nach dimension 8 erst gar nichts (was aufgrund der datenmenge nicht verwundert) aber dann der (mir allzugut) bekannte laufzeit fehler &quot;was forced to terminate it in an unusual way).</p>
<p>also können in jedem v[i] tausende elemente liegen, und auch v kann eine länge von 10.000 oder mehr haben.</p>
<p>wie gesagt bis m=7 funktioniert alles wunderbar, danach streikt das programm.<br />
woran liegt das und wie kann ich es vermeiden, vielen dank für die hilfe im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216312/große-mengen-an-variablen-in-2-dim-array</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 13:44:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216312.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Jun 2008 14:12:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to große mengen an variablen in 2-dim array on Sun, 22 Jun 2008 14:35:07 GMT]]></title><description><![CDATA[<p>Hallo ich habe einen Algorithmus, der mehrere zweidimensionale arrays in zweidimensionalen vectoren ablegen soll.<br />
falls man sich fragt, warum:<br />
jeder zweidimensionale array wird &quot;hintereinander&quot; in einem vector abgelegt, so dass ich mehrere &quot;matrizen&quot; speichern kann.</p>
<p>das sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">int i,j,count=0;
vector&lt;vector&lt;int&gt; &gt; v ; 
do
{
B3(T,m,Part2); // egal, was die macht, daran liegt nicht der fehler

do{
v.push_back(vector&lt;int&gt;());
B(T,m,Part2); // egal, was die macht, daran liegt nicht der fehler
for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        T2[i][j]=T[i][j];

for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        T3[i][j]=T2[i][j];    
linord(T2,m); // egal, was die macht, daran liegt nicht der fehler

for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        v[count].push_back(T2[i][j]);
c=0;
for(i=0;i&lt;m;i++)
    if(T3[i][i]==1)
        c++;

if(c&gt;1)
    {
    linord2(T3,m); // egal, was die macht, daran liegt nicht der fehler
    count++;
    v.push_back(vector&lt;int&gt;());
    for (i=0; i&lt;m; i++)
        for (j=0; j&lt;m; j++)
            v[count].push_back(T3[i][j]);
    }

abb=Btest(T,m,abb,Part2);
count++;

}while(abb==0);
</code></pre>
<p>T, T2 und T3 sind zweidimensionale Arrays, die ich in v[count] ablege und zwar so, dass ich die ganzen zeilen hintereinander anfüge, bei einer entsprechenden ausgabe ergeben sich wieder matritzen, so der plan :). jedoch können auch mehrere matrizen in einem vector abgelegt werden müssen.<br />
bis zu einer arraylänge 7 funktioniert das auch wunderbar, jedoch kommt nach dimension 8 erst gar nichts (was aufgrund der datenmenge nicht verwundert) aber dann der (mir allzugut) bekannte laufzeit fehler &quot;was forced to terminate it in an unusual way).</p>
<p>also können in jedem v[i] tausende elemente liegen, und auch v kann eine länge von 10.000 oder mehr haben.</p>
<p>wie gesagt bis m=7 funktioniert alles wunderbar, danach streikt das programm.<br />
woran liegt das und wie kann ich es vermeiden, vielen dank für die hilfe im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533673</guid><dc:creator><![CDATA[cofriga]]></dc:creator><pubDate>Sun, 22 Jun 2008 14:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to große mengen an variablen in 2-dim array on Sun, 22 Jun 2008 17:36:04 GMT]]></title><description><![CDATA[<p>ich würds ja fast ma angucken, aber:<br />
einrücken wäre toll gewesen...<br />
und so was:</p>
<pre><code class="language-cpp">for(i=0;i&lt;m;i++)
    if(T3[i][i]==1)
        c++;
</code></pre>
<p>ist zwar von der form her ok, aber ich würds niemals so machen, weil ichs unübersichtlich find...</p>
<p>funktionsnamen, wie B oder B3 find ich auch ne so toll ^^</p>
<pre><code class="language-cpp">c=0;
</code></pre>
<p>wo und als was is c deklariert?</p>
<p>übrigens solltest du dir mal iteratoren angucken - und wenn die arrays wirklich alle immer so groß werden, solltest du ma drüber nachdenken für i, j und count nen unsigned datentyp zu nehmen - unsigned long long würd ich dir ja einfach ma so vorschlagen - da sollte nix mehr schief gehen ^^</p>
<pre><code class="language-cpp">v.push_back(vector&lt;int&gt;());
    for (i=0; i&lt;m; i++)
        for (j=0; j&lt;m; j++)
            v[count].push_back(T3[i][j]);
</code></pre>
<p>würd ich anders machen: erst den neuen vector erstellen und befüllen und den dann erst hinten an v anfügen...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533781</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 22 Jun 2008 17:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to große mengen an variablen in 2-dim array on Sun, 22 Jun 2008 22:06:45 GMT]]></title><description><![CDATA[<p>vielen dank für die antwort...</p>
<p>auch mit unsigned long long klappt es genausowenig und wie kann ich in diesem fall erst den vector erst befüllen und dann anfügen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533898</guid><dc:creator><![CDATA[cofriga]]></dc:creator><pubDate>Sun, 22 Jun 2008 22:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to große mengen an variablen in 2-dim array on Mon, 23 Jun 2008 06:24:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for (size_t i (0); i != m; ++i)
   { 
      std::vector &lt;int&gt; topushback;
      for (size_t j (0); j != m; ++j) //ist hier eigtl bei beiden schleifen das m gewollt? also ist das 2d-array immer quadratisch?
         {
            topushback.push_back(T3[i][j]);
         }
      v.push_back (topushback);
   }
</code></pre>
<p>bist du das ganze denn auch ma mit nem debugger durchgegangen?<br />
da muss man doch merken, wo der fehler liegt &gt;&lt;</p>
<p>bb</p>
<p>PS:</p>
<pre><code class="language-cpp">for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        T2[i][j]=T[i][j];

for (i=0; i&lt;m; i++)
    for (j=0; j&lt;m; j++)
        T3[i][j]=T2[i][j];
</code></pre>
<p>was spricht hier gegen:</p>
<pre><code class="language-cpp">T2 = T;
//bzw.
T3 = T2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1533943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533943</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 23 Jun 2008 06:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to große mengen an variablen in 2-dim array on Mon, 23 Jun 2008 06:54:43 GMT]]></title><description><![CDATA[<p>sry für doppelpost, aber ich hab mir das ganze jz doch ma genauer angeguckt ^^</p>
<pre><code class="language-cpp">size_t count (0);
std::vector &lt;vector &lt;int&gt; &gt; myvector; 

do //die schleife geht hier nicht zu...
	{
		B3 (T, m, Part2); //TODO: ordentlichen Funktionsnamen ausdenken... 

		for (; Btest (T, m, abb, Part2); ++count) //war deine die schleife mit while (abb == 0) oder so
			{ 
				myvector.push_back (vector &lt;int&gt;); //warum nen leeren vector hinten ran?
				B (T, m, Part2); //TODO: ordentlichen Funktionsnamen ausdenken...
				T2 = T;
				T3 = T;

				linord (T2, m); //TODO: aussagekräftigeren Funktionsnamen ausdenken...

				{
				const std::vector &lt;vector &lt;int&gt; &gt;::const_iterator end (T2.end ());
				for (std::vector &lt;vector &lt;int&gt; &gt;::const_iterator iter (T2.begin ()); iter != end; ++iter)
					{
						const std::vector &lt;vector &lt;int&gt; &gt;::const_iterator end_2 (iter-&gt;end ());
						for (std::vector &lt;vector &lt;int&gt; &gt;::const_iterator iter_2 (iter-&gt;begin ()); iter_2 != end_2; ++iter_2)
							{
								myvector[count].push_back (*iter_2);
								/*wenn es eh immer der gleiche wert ist, ist es hier vll auch sinnvoller,
								das ganze erst in nen eigenen vector zu hauen und dann erst hinten ranzupushen.
								Wenn nicht so, dann wenigstens nen iterator nehmen...*/
							}
					}
				}

				unsigned long long c (0); /*sieht so aus, als ob hier auch nen bool reichen würde - oder gar keine extra variable...
Sondern statt dem ++c einfach nur der inhalt des if(c)-Blocks rein müsste*/
				{
				const std::vector &lt;vector &lt;int&gt; &gt;::const_iterator end (T3.end ());
				for (std::vector &lt;vector &lt;int&gt; &gt;::const_iterator iter (T3.begin ()); iter != end; ++iter)
					{
						const std::vector &lt;vector &lt;int&gt; &gt;::const_iterator end_2 (iter-&gt;end ());
						for (std::vector &lt;vector &lt;int&gt; &gt;::const_iterator iter_2 (iter-&gt;begin ()); iter_2 != end_2; ++iter_2)
							{
								if (*iter_2 == 1)
									{
										++c;
									}
							}
					}
				}

				if (c) 
					{ 
						linord2 (T3, m); //TODO: fkt-name...
						++count;
						std::vector &lt;int&gt; topushback; //ist es gewollt, alles in ein und die gleiche zeile zu schreiben?
						for (size_t i(0); i != m; ++i) //wie das mit iteratoren geht, steht ja weiter oben schon mal
							{
								for (size_t j(0); j != m; ++j) 
									{
										topushback.push_back (T3[i][j]);
									}
							}
						myvector[count].push_back (topushback);
					} 
			}
	//} fehlt noch...
</code></pre>
<p>Es wäre halt auch mal ganz hilfreich zu wissen, was das ganze überhaupt machen soll...</p>
<p>kein plan, wie viele fehler ich eingebaut hab, die davor noch nich da waren ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533952</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 23 Jun 2008 06:54:43 GMT</pubDate></item></channel></rss>