<?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[int**** array anstatt int array [a][b][c][d]]]></title><description><![CDATA[<p>Hey,<br />
ich bin extrem neu was den Umgang mit C++ angeht. Ich habe eine Aufgabe, bei der ich ein 4d Array benötige dieses aber zu groß wird um es auf dem Stack anzulegen also so in der art</p>
<pre><code class="language-cpp">int array[a][b][c][d];
</code></pre>
<p>Mit anschließender Initalisierung via for-Schleifen (verschachtelt)</p>
<p>Jetzt wollte ich das Ganze auf den Heap bringen mit Pointern doch wie mache ich das nun um hier etwas ähnliches abbilden zu können<br />
Ich habe ein Beispiel gefunden in dieser Art</p>
<pre><code class="language-cpp">int** f = new int*[101];
for (int i=0; i&lt;101; i++)
{
 int a=4;
 f[i]= new int[a];
}
</code></pre>
<p>Wie kann ich aber dieses Beispiel jetzt auf meinen int**** Pointer übertragen? Wäre nett wenn mir jemand auf die Sprünge helfen könnte</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301447/int-array-anstatt-int-array-a-b-c-d</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 23:50:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301447.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Mar 2012 15:24:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 15:24:10 GMT]]></title><description><![CDATA[<p>Hey,<br />
ich bin extrem neu was den Umgang mit C++ angeht. Ich habe eine Aufgabe, bei der ich ein 4d Array benötige dieses aber zu groß wird um es auf dem Stack anzulegen also so in der art</p>
<pre><code class="language-cpp">int array[a][b][c][d];
</code></pre>
<p>Mit anschließender Initalisierung via for-Schleifen (verschachtelt)</p>
<p>Jetzt wollte ich das Ganze auf den Heap bringen mit Pointern doch wie mache ich das nun um hier etwas ähnliches abbilden zu können<br />
Ich habe ein Beispiel gefunden in dieser Art</p>
<pre><code class="language-cpp">int** f = new int*[101];
for (int i=0; i&lt;101; i++)
{
 int a=4;
 f[i]= new int[a];
}
</code></pre>
<p>Wie kann ich aber dieses Beispiel jetzt auf meinen int**** Pointer übertragen? Wäre nett wenn mir jemand auf die Sprünge helfen könnte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195895</guid><dc:creator><![CDATA[maddy87]]></dc:creator><pubDate>Tue, 27 Mar 2012 15:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 15:29:08 GMT]]></title><description><![CDATA[<p><code>std::vector</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195898</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Tue, 27 Mar 2012 15:29:08 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 15:40:00 GMT]]></title><description><![CDATA[<p>Du müsstest das halt in 3 Schleifen für jede Dimension durchziehen. Aber das zerstückelt den Speicher total. Müssen alle 4 Dimensionen dynamisch sein? Nein, offenbar nicht. Das Problem war ja nur die Größe.</p>
<p>Die Frage ist, wie soll der Speicher aufgebaut sein? Am besten am Stück, so wie auch bei einem Vierdimensionalen Array. Also:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; v(a * b * c * d);
</code></pre>
<p>Aber: Darauf kann man natürlich nur doof zugreifen, wenn das 4 Dimensionen sein sollen. Wie wird das denn berechnet?</p>
<pre><code class="language-cpp">v[i][j][k][l] == v[i * b * c * d + j * c * d + k * c + l];
</code></pre>
<p>Ok, das ist nervig zu schreiben. Aber man kann das kapseln:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

class my_4d_array
{
  std::vector&lt;int&gt; data_;
public:
  const std::size_t x, y, z, w;
  my_4d_array(std::size_t x, std::size_t y, std::size_t z, std::size_t w)
    : x(x)
    , y(y)
    , z(z)
    , w(w)
    , data_(x * y * z * w)
  {}
  int&amp; operator () (std::size_t i, std::size_t j, std::size_t k, std::size_t l)
  {
    return data_[i * y * z * w + j * z * w + k * w + l];
  }
  const int&amp; operator () (std::size_t i, std::size_t j, std::size_t k, std::size_t l) const
  {
    return data_[i * y * z * w + j * z * w + k * w + l];
  }
};

int main()
{
  my_4d_array a(50, 25, 45, 76);
  a(2, 7, 5, 3) = 42;
}
</code></pre>
<p>Dadaa!</p>
<p>Oder, wenn alles zur Compilezeit bekannt ist:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;array&gt;

int main()
{
	std::vector&lt;std::array&lt;std::array&lt;std::array&lt;int, 50&gt;, 25&gt;, 25&gt;&gt; v(5000);
	v[5][3][5][6] = 44;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2195899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195899</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 27 Mar 2012 15:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 15:35:00 GMT]]></title><description><![CDATA[<p>Informier dich mal über den Begriff &quot;three star programmer&quot;. Dein Programm hat einen gewaltigen Bedarf nach Abstraktion. Zum Glück kommt dir die Standardbibliothek mit zwei einfachen Arrayabstraktion entgegen: std::array (in tr1 und C++11, aber auch ganz einfach selber zu programmieren) für statische Arrays und std::vector für dynamische. Es ist aber gut möglich, dass du eine besser passende Abstraktion für dein konkretes Problem finden kannst, als diesen sehr allgemeinen Containern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195900</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Mar 2012 15:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 15:44:11 GMT]]></title><description><![CDATA[<p>Ich habe das mal wie folgt inizialisiert</p>
<pre><code class="language-cpp">int**** pointer = new int***[192];

		for (int a=0; a&lt;192;a++)
		{
			pointer[a]*** = new int**[256];
			for (int b=0; b&lt;256; b++)
			{
				pointer[a][b]** = new int*[24];
				for (int c=0; c&lt;24; c++)
				{
					pointer[a][b][c]* =new int[10];
					for (int d=0; d&lt;10; d++)
					{
						pointer[a][b][c][d]=-1;
					}

				}
			}
		}
</code></pre>
<p>Dich leider sagt er jetzt immer einen Syntaxfehler in den folgenden Zeilen<br />
pointer[a]*** = new int**[256];<br />
pointer[a][b]** = new int*[24];<br />
pointer[a][b][c]* =new int[10];</p>
<p>Eigentlich wäre es schön wenn alle 4 &quot;Dimensionen&quot; dynamisch wären, aber zu Testzwecken reicht es momentan auch Fest. Es geht um Pixelkoordinaten in einem 3d Bild mit Parametern zu versehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195903</guid><dc:creator><![CDATA[maddy87]]></dc:creator><pubDate>Tue, 27 Mar 2012 15:44:11 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 15:51:21 GMT]]></title><description><![CDATA[<p>Du hast Dereferenzierungen nicht verstanden.</p>
<pre><code class="language-cpp">int ****v; // Typ: int****
*v; // Typ: int***
**v; // Typ: int**
***v; // Typ: int*
****v; // Typ: int
</code></pre>
<p>Aber bitte lies meinen Beitrag von oben. Und erzähl uns mal etwas mehr. Attribute über ein 3D Bild?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195907</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 27 Mar 2012 15:51:21 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:06:17 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p><code>std::vector&lt;std::array&lt;std::array&lt;std::array&lt;int, 50&gt;, 25&gt;, 25&gt;&gt;</code></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Und wer garantiert dir da, dass das hintereinander im Speicher liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195912</guid><dc:creator><![CDATA[lazycoder]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:06:17 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:14:23 GMT]]></title><description><![CDATA[<p>lazycoder schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Und wer garantiert dir da, dass das hintereinander im Speicher liegt?</p>
</blockquote>
<p>Es ist nicht garantiert, aber recht wahrscheinlich. Und da es um Performance und nicht um Fehler geht, kann man das problemlos machen denke ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195917</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:14:46 GMT]]></title><description><![CDATA[<p>lazycoder schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p><code>std::vector&lt;std::array&lt;std::array&lt;std::array&lt;int, 50&gt;, 25&gt;, 25&gt;&gt;</code></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Und wer garantiert dir da, dass das hintereinander im Speicher liegt?</p>
</blockquote>
<p>Äh...der Standard. std::array hat alles lokal und std::vector alles direkt hintereinander im Speicher.</p>
<p>Trotzdem lasse ich mal einen Link zu <a href="http://www.boost.org/doc/libs/1_49_0/libs/multi_array/doc/user.html" rel="nofollow">Boost.Multi-Array</a> hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195918</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:17:27 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Äh...der Standard. std::array hat alles lokal und std::vector alles direkt hintereinander im Speicher.</p>
</blockquote>
<p>std::array darf hinter den Daten aber so viel stehen haben wie es will. Wie oben gesagt: Wahrscheinlich, aber meines Wissens nach nicht garantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195919</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:23:39 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Und da es um Performance und nicht um Fehler geht, kann man das problemlos machen denke ich.</p>
</blockquote>
<p>Hat er nie gesagt. Außerdem ist er Programmieranfänger, kann das also nicht einschätzen.</p>
<p>Noch einmal zum Mitschreiben: Was du suchst, ist <code>vector</code> . Das ist das eindimensionale dynamische Array in C++. Damit lässt sich leicht ein vierdimensionales bauen, wie schon hinreichend beschrieben.<br />
Ob das in der Größe veränderbar ist, kann dir solange egal sein, bis du das Konzept gut verstanden hast. Mit Zeigergefrickel würde das länger dauern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195924</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:34:29 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Hat er nie gesagt. Außerdem ist er Programmieranfänger, kann das also nicht einschätzen.</p>
</blockquote>
<p>lol, die Aussage dass es performanter ist alles am Stück zu haben kommt doch von <strong>mir</strong>, <strong>der TE</strong> hat diese Forderung nie aufgestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195930</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 16:57:30 GMT]]></title><description><![CDATA[<p>lazycoder schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p><code>std::vector&lt;std::array&lt;std::array&lt;std::array&lt;int, 50&gt;, 25&gt;, 25&gt;&gt;</code></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Und wer garantiert dir da, dass das hintereinander im Speicher liegt?</p>
</blockquote>
<p>Das verstehe ich nicht. [] ist doch ein überladener Operator. Wenn std::array das intern nicht richtig machte, wäre das ja fatal, dann könnte ja genausogut</p>
<pre><code class="language-cpp">std::array&lt;int,5&gt; ar;
ar[4]=4; // Ist an der Stelle auch wirklich das 5te Element...
</code></pre>
<p>schiefgehen. Oder verstehe ich da gerade etwas falsch, falls ja, klär mich bitte auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195940</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 27 Mar 2012 16:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Tue, 27 Mar 2012 17:14:04 GMT]]></title><description><![CDATA[<p>Edit: -</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2195948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2195948</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 27 Mar 2012 17:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Wed, 28 Mar 2012 13:31:26 GMT]]></title><description><![CDATA[<p>Hey ich bin es nochmal,<br />
also es geht in erster Linie nicht um performance.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196201</guid><dc:creator><![CDATA[maddy87]]></dc:creator><pubDate>Wed, 28 Mar 2012 13:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Wed, 28 Mar 2012 14:16:41 GMT]]></title><description><![CDATA[<p>Wo ist dein Problem? Hast du die Beiträge gelesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196229</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 28 Mar 2012 14:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Wed, 28 Mar 2012 15:03:31 GMT]]></title><description><![CDATA[<p>Ja ich habe die Beiträge gelesen, und habe es mal mit den verschiedenen vorgeschlagenen Ansätzen versucht, erstes Problem auf das ich gestoßen bin</p>
<pre><code class="language-cpp">#include &lt;array&gt;
</code></pre>
<p>produziert fehler. Somit kann ich auch den Ansatz mit dem Vektor der mehrere Array enthält nicht testen (ich glaube der war von dir cooky).<br />
Deswegen habe ich jetzt 4 &quot;verschachtelte&quot; Vektoren genutzt. Dies funktioiert</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; pHelpV1 (192,0);
std::vector&lt; std::vector&lt;int&gt; &gt; pHelpV2 (256, pHelpV1);
std::vector&lt; std::vector&lt; std::vector&lt;int&gt; &gt; &gt;pHelpV3 (24, pHelpV2);
std::vector&lt; std::vector&lt; std::vector&lt; std::vector&lt;int&gt; &gt; &gt; &gt;pMeshPointMap (10, pHelpV3);
</code></pre>
<p>So etwas ähnliches hatte ich <a href="http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html#VECTOR" rel="nofollow">hier</a> gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196248</guid><dc:creator><![CDATA[maddy87]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Wed, 28 Mar 2012 15:05:43 GMT]]></title><description><![CDATA[<p>maddy87 schrieb:</p>
<blockquote>
<p>produziert fehler.</p>
</blockquote>
<p>Welchen Compiler / Version nutzt du?<br />
Das mit den geschachteteln Vektoren ist kein Problem, ist halt nur nicht so flott.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196249</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:05:43 GMT</pubDate></item><item><title><![CDATA[Reply to int**** array anstatt int array [a][b][c][d] on Wed, 28 Mar 2012 15:08:14 GMT]]></title><description><![CDATA[<p>Dann eben std::tr1::array aus &lt;tr1/array&gt;. Oder so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196253</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:08:14 GMT</pubDate></item></channel></rss>