<?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[Dynamisches Mehrdimensionales Array]]></title><description><![CDATA[<p>Hallo,<br />
ich habe mir noch mal die Erzeugung eines dynamischen mehrdimensionalen Arrays durchgelesen,<br />
und mir kam eine Idee. Ich habe mir gedacht, am Anfang deklariert man ja nur das bla ein<br />
Zeiger auf ein Array von Zeigern sein soll. Und diesen Einzelnen Zeigern gibt man dann<br />
Arrays von einzelnen Werten:</p>
<pre><code class="language-cpp">int** bla;
bla = new int* [zeilen];

for (int i = 0; i &lt; zeilen; ++i)
    bla[i] = new int [spalten];
</code></pre>
<p>Das sieht dann ja so aus:</p>
<pre><code>**bla -&gt; *bla[0] -&gt; bla[0][0] -&gt; bla[0][1] -&gt; ...
         *bla[1] -&gt; ...
         ...
</code></pre>
<p>(Ich habe das in Codetags eingeschlossen, damit die Einrückung erfolgt!)</p>
<p>Jetzt habe ich mir gedacht, man könnte die Spalten Anzahl verändern in der Schleife, dann<br />
hätte man bei dem mehrdimensionalen Array kein &quot;Rechteck&quot; mehr, sondern ein &quot;Dreick&quot; o.ä.<br />
In meinem Buch steht bei mehrdimensionalen Arrays, dass die Spaltenanzahl gleich bleibt.<br />
Folgendes Programm funktioniert aber:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
	int** bla;
	int zeilen = 5;

	bla = new int*[zeilen];
	for (int i = 0; i &lt; zeilen; ++i)
		bla[i] = new int[i+1];   // jeder bekommt unterschiedlich viele Elemente

	for (int i = 0; i &lt; zeilen; ++i) 
		for (int j = 0; j &lt; i+1; ++j) 
			bla[i][j] = i+j; // irgendwelche Werte zuweisen

	for (int i = 0; i &lt; zeilen; ++i) {
		for (int j = 0; j &lt; zeilen; ++j) {
			std::cout&lt;&lt;bla[i][j]&lt;&lt;&quot; &quot;; // funktioniert auch
		}
		std::cout&lt;&lt;&quot;\n&quot;;
	}

	std::cin.get();
	return 0;
}
</code></pre>
<p>Gibt es jetzt in obigen Beispiel kein bla[0][2]? Oder gibt es diesen Wert, und ich habe in<br />
einfach nicht verwendet? Warum funktioniert dann bla[i] = new int[i+1]. Da verändert sich doch die Größe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206371/dynamisches-mehrdimensionales-array</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 08:48:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206371.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Feb 2008 12:15:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 12:15:09 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe mir noch mal die Erzeugung eines dynamischen mehrdimensionalen Arrays durchgelesen,<br />
und mir kam eine Idee. Ich habe mir gedacht, am Anfang deklariert man ja nur das bla ein<br />
Zeiger auf ein Array von Zeigern sein soll. Und diesen Einzelnen Zeigern gibt man dann<br />
Arrays von einzelnen Werten:</p>
<pre><code class="language-cpp">int** bla;
bla = new int* [zeilen];

for (int i = 0; i &lt; zeilen; ++i)
    bla[i] = new int [spalten];
</code></pre>
<p>Das sieht dann ja so aus:</p>
<pre><code>**bla -&gt; *bla[0] -&gt; bla[0][0] -&gt; bla[0][1] -&gt; ...
         *bla[1] -&gt; ...
         ...
</code></pre>
<p>(Ich habe das in Codetags eingeschlossen, damit die Einrückung erfolgt!)</p>
<p>Jetzt habe ich mir gedacht, man könnte die Spalten Anzahl verändern in der Schleife, dann<br />
hätte man bei dem mehrdimensionalen Array kein &quot;Rechteck&quot; mehr, sondern ein &quot;Dreick&quot; o.ä.<br />
In meinem Buch steht bei mehrdimensionalen Arrays, dass die Spaltenanzahl gleich bleibt.<br />
Folgendes Programm funktioniert aber:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
	int** bla;
	int zeilen = 5;

	bla = new int*[zeilen];
	for (int i = 0; i &lt; zeilen; ++i)
		bla[i] = new int[i+1];   // jeder bekommt unterschiedlich viele Elemente

	for (int i = 0; i &lt; zeilen; ++i) 
		for (int j = 0; j &lt; i+1; ++j) 
			bla[i][j] = i+j; // irgendwelche Werte zuweisen

	for (int i = 0; i &lt; zeilen; ++i) {
		for (int j = 0; j &lt; zeilen; ++j) {
			std::cout&lt;&lt;bla[i][j]&lt;&lt;&quot; &quot;; // funktioniert auch
		}
		std::cout&lt;&lt;&quot;\n&quot;;
	}

	std::cin.get();
	return 0;
}
</code></pre>
<p>Gibt es jetzt in obigen Beispiel kein bla[0][2]? Oder gibt es diesen Wert, und ich habe in<br />
einfach nicht verwendet? Warum funktioniert dann bla[i] = new int[i+1]. Da verändert sich doch die Größe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461890</guid><dc:creator><![CDATA[*D*]]></dc:creator><pubDate>Sun, 24 Feb 2008 12:15:09 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 12:40:09 GMT]]></title><description><![CDATA[<p>ho wo ist denn dein delete[] ? SO sieht speicherbereinigung aber nicht aus <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="😮"
    /></p>
<p>Zu deinem Problem:<br />
Du willst wissen ob es [0][2] gibt ? Die Antwort ist nein ...</p>
<pre><code class="language-cpp">bla = new int*[zeilen];
    for (int i = 0; i &lt; zeilen; ++i)
        bla[i] = new int[i+1];   // beim ersten durch gang ist i = 0... also wird
                                 // bla[0] = new int [0+1];
                                 // Somit wird dem ersten zeiger ein array mit
                                 // einem element zuzgewiesen !
</code></pre>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461902</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Sun, 24 Feb 2008 12:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 12:44:05 GMT]]></title><description><![CDATA[<p>bla... std::vector... bla bla nix delete<br />
bla.. mehrdimensional -&gt; eindimensional[x+y*width]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461904</guid><dc:creator><![CDATA[überpro]]></dc:creator><pubDate>Sun, 24 Feb 2008 12:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 13:15:03 GMT]]></title><description><![CDATA[<p>hoho da kennt jemand die standart library hoho<br />
nur war das nicht gefragt ... wer lesen kann ist klar im vorteil</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461915</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Sun, 24 Feb 2008 13:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 13:52:04 GMT]]></title><description><![CDATA[<p>trotzdem ist std::vector besser.<br />
lern erst mal standart schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461951</guid><dc:creator><![CDATA[überpro]]></dc:creator><pubDate>Sun, 24 Feb 2008 13:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 13:55:48 GMT]]></title><description><![CDATA[<p>Registrier du dich erstmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461954</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Sun, 24 Feb 2008 13:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 13:57:05 GMT]]></title><description><![CDATA[<blockquote>
<p>lern erst mal standart schreiben.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://de.wikipedia.org/wiki/Standard" rel="nofollow">http://de.wikipedia.org/wiki/Standard</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461955</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 24 Feb 2008 13:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 14:01:29 GMT]]></title><description><![CDATA[<p>Autsch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461961</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Sun, 24 Feb 2008 14:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 14:03:19 GMT]]></title><description><![CDATA[<p>Foxx90 schrieb:</p>
<blockquote>
<p>Autsch!</p>
</blockquote>
<p>Obwohl ich das gerne gemacht habe, muss ich zugeben, dass ER das mit Absicht falsch geschrieben hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Sonst wäre er nicht auf die Idee gekommen [ b] - Tags reinzumachen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461963</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 24 Feb 2008 14:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 14:04:23 GMT]]></title><description><![CDATA[<p>standard kann ja hier jeder schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461964</guid><dc:creator><![CDATA[überpro]]></dc:creator><pubDate>Sun, 24 Feb 2008 14:04:23 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Mehrdimensionales Array on Sun, 24 Feb 2008 22:17:09 GMT]]></title><description><![CDATA[<p>Aber im ernst ... warum net 2d auf 1d blitten?</p>
<pre><code class="language-cpp">template&lt;typename value_type&gt;
struct array2
{
    typedef value_type value_t;
    typedef std::pair&lt;std::size_t, std::size_t&gt; dimension_t;

    value_t const&amp; get(const std::size_t x, const std::size_t y) const { return m_data[y * m_size.first + x]; }
    value_t&amp; at(const std::size_t x, const std::size_t y) { if (x &gt; m_size.first || y &gt; m_size.second) throw std::out_of_range(&quot;index&quot;); return m_data[y * m_size.first + x]; } 
    value_t&amp; operator()(const std::size_t x, const std::size_t y) { return m_data[y * m_size.first + x]; }
    value_t const&amp; operator() (const std::size_t x, const std::size_t y) const { return m_data[y * m_size.first + x]; }

    array2(const std::size_t width, const std::size_t height, value_type const&amp; default_value = value_type())
        : m_size(std::make_pair(width, height)), m_data(new value_type[width * height](default_value))
    {}
    ~array2() { delete [] m_data; }

    array2&amp; operator=(array2 const&amp; rhs)
    {
        if (this == &amp;rhs) return *this;
        delete [] m_data;
        m_data = new value_type[rhs.m_size.first * rhs.m_size.second];
        m_size = rhs.m_size;
        std::copy(m_data, m_data + (m_size.first * m_size.second), rhs.m_data);
        return *this;
    }

    array2(array2 const&amp; rhs)
        : m_size(rhs.m_size), m_data(new value_type[rhs.m_size.first * rhs.m_size.second])
    { std::copy(m_data, m_data + (m_size.first * m_size.second), rhs.m_data); }

private:
    value_t* m_data;
    dimension_t m_size;    
};

std::ostream&amp; foo(std::ostream&amp; out, array2&lt;double&gt; const&amp; bar)
{ return out &lt;&lt; bar.get(1, 2) }

int main()
{
    array2&lt;double&gt; data(10, 10, 1.0);
    std::cout &lt;&lt; data(0, 1) &lt;&lt; std::endl;
    std::cout &lt;&lt; foo(data) &lt;&lt; std::endl;
}
</code></pre>
<p>usw. ... ist viel schöner als so nen dummer 2d array ^^ aber noch einfacher:</p>
<pre><code class="language-cpp">std::vector&lt; std::vector&lt;double&gt; &gt; data;
</code></pre>
<p>_D</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462229</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 24 Feb 2008 22:17:09 GMT</pubDate></item></channel></rss>