<?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[2D-Array: [x][y] oder [y][x]?]]></title><description><![CDATA[<p>Mir ist immer noch nicht ganz klar, ob ich bei 2D-Arrays zuerst die Y-Dimension oder zuerst die X-Dimension nehmen soll.</p>
<p>xy scheint Standard zu sein, aber yx sehe ich auch manchmal und in welcher Reihenfolge die zwei for-Loops angeordnet sind vergesse ich immer wieder.</p>
<p>Gibts da einfache Regeln, die man sich merken kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321639/2d-array-x-y-oder-y-x</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 06:05:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321639.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Nov 2013 18:07:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Tue, 19 Nov 2013 18:07:35 GMT]]></title><description><![CDATA[<p>Mir ist immer noch nicht ganz klar, ob ich bei 2D-Arrays zuerst die Y-Dimension oder zuerst die X-Dimension nehmen soll.</p>
<p>xy scheint Standard zu sein, aber yx sehe ich auch manchmal und in welcher Reihenfolge die zwei for-Loops angeordnet sind vergesse ich immer wieder.</p>
<p>Gibts da einfache Regeln, die man sich merken kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366400</guid><dc:creator><![CDATA[ÿÿÿÿÿÿÿÿÿ]]></dc:creator><pubDate>Tue, 19 Nov 2013 18:07:35 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Tue, 19 Nov 2013 18:14:23 GMT]]></title><description><![CDATA[<p>Das ist sogar egal wie rum du das machst.<br />
Hauptsache du machst es, sobald du es machst, in dem Programm konsistent gleich.</p>
<p>Es kommt halt auf deine Abstraktion und Interpretation der Daten an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366401</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 19 Nov 2013 18:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Tue, 19 Nov 2013 18:28:03 GMT]]></title><description><![CDATA[<p><code>int[y][x]</code><br />
ist ein Array von <code>y</code> Arrays à <code>x</code> ints.</p>
<p>Cachefreundlich ist es also nur, wenn Du <code>x</code> in der inneren Schleife hochzählst.<br />
(Das gilt für C/C++, bei Fortran ist es z.B. andersherum)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366405</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Tue, 19 Nov 2013 18:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Tue, 19 Nov 2013 20:50:26 GMT]]></title><description><![CDATA[<p><div class="plugin-markdown"><input type="checkbox" id="checkbox21790" checked="true" /><label for="checkbox21790">mit for(y)for(x) oder int[x][y] mit for(x)for(y). Welches davon ist Standard?</label></div></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366440</guid><dc:creator><![CDATA[ÿÿÿÿÿÿÿÿÿ]]></dc:creator><pubDate>Tue, 19 Nov 2013 20:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Tue, 19 Nov 2013 21:23:14 GMT]]></title><description><![CDATA[<p>XY?<br />
Namen sind Schall und Rauch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366450</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Tue, 19 Nov 2013 21:23:14 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Tue, 19 Nov 2013 22:11:46 GMT]]></title><description><![CDATA[<p>ÿÿÿÿÿÿÿÿÿ schrieb:</p>
<blockquote>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox21791" checked="true" /><label for="checkbox21791">mit for(y)for(x) oder int[x][y] mit for(x)for(y). Welches davon ist Standard?</label></div></p>
</blockquote>
<p>Wer solche Fragen stellt, kann mit der Antwort meist eh nix anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366456</guid><dc:creator><![CDATA[CppNeuland]]></dc:creator><pubDate>Tue, 19 Nov 2013 22:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 06:47:33 GMT]]></title><description><![CDATA[<p>Der Standard in C und C++ ist row-major format, also</p>
<p>int[y][x]</p>
<p>Das ist eine Eigenheit der C-Dialekte die zum Beispiel von Fortranjüngern nicht geteilt wird, die bevorzugen eher column-major format.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366474</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 20 Nov 2013 06:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 07:01:29 GMT]]></title><description><![CDATA[<p>Ach, da gibt es wirklich einen Standard für? Ich meine, es ist doch eher von Algorithmus vorgegeben, was in die inneren Schleife gehört. Wenn aber nur über alle Tupel durchiteriert werden muss, dann ist es doch piepegal was innen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366476</guid><dc:creator><![CDATA[CppNeuland]]></dc:creator><pubDate>Wed, 20 Nov 2013 07:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 10:08:46 GMT]]></title><description><![CDATA[<p>CppNeuland schrieb:</p>
<blockquote>
<p>Ach, da gibt es wirklich einen Standard für? Ich meine, es ist doch eher von Algorithmus vorgegeben, was in die inneren Schleife gehört. Wenn aber nur über alle Tupel durchiteriert werden muss, dann ist es doch piepegal was innen ist.</p>
</blockquote>
<p>Beim Drüberiterieren ist die Anordnung im Speicher Performancerelevant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366505</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Wed, 20 Nov 2013 10:08:46 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 10:35:10 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p>CppNeuland schrieb:</p>
<blockquote>
<p>Ach, da gibt es wirklich einen Standard für? Ich meine, es ist doch eher von Algorithmus vorgegeben, was in die inneren Schleife gehört. Wenn aber nur über alle Tupel durchiteriert werden muss, dann ist es doch piepegal was innen ist.</p>
</blockquote>
<p>Beim Drüberiterieren ist die Anordnung im Speicher Performancerelevant.</p>
</blockquote>
<p>Richtig, mehr aber auch nicht.</p>
<p>Wenn dir Performance egal (oder nicht bewusst) ist, dann kannst du es machen wie es dir im Denken einfacher erscheint.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366508</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 20 Nov 2013 10:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 10:55:30 GMT]]></title><description><![CDATA[<p>Ob es deswegen wohl RAM heißt? <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/2366511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366511</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Wed, 20 Nov 2013 10:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 12:14:50 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p>CppNeuland schrieb:</p>
<blockquote>
<p>Ach, da gibt es wirklich einen Standard für? Ich meine, es ist doch eher von Algorithmus vorgegeben, was in die inneren Schleife gehört. Wenn aber nur über alle Tupel durchiteriert werden muss, dann ist es doch piepegal was innen ist.</p>
</blockquote>
<p>Beim Drüberiterieren ist die Anordnung im Speicher Performancerelevant.</p>
</blockquote>
<p>Wenn ich eh alle Pixel durchgehen muss, dann ist es doch egal ob ich x oder y in der inneren Schleife habe. Ich verstehe die Logik hinter der Aussage nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366517</guid><dc:creator><![CDATA[CppNeuland]]></dc:creator><pubDate>Wed, 20 Nov 2013 12:14:50 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 12:18:03 GMT]]></title><description><![CDATA[<p>CppNeuland schrieb:</p>
<blockquote>
<p>Wenn ich eh alle Pixel durchgehen muss, dann ist es doch egal ob ich x oder y in der inneren Schleife habe. Ich verstehe die Logik hinter der Aussage nicht.</p>
</blockquote>
<p>Je nachdem, ob du zeilen- oder spaltenweise iterierst, passierst du die einzelnen Elemente entweder mit fortlaufender Adressierung oder hast dauernd Sprünge. Letzteres ist relativ cache-unfreundlich und daher tendenziell langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366519</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 20 Nov 2013 12:18:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 12:27:34 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>CppNeuland schrieb:</p>
<blockquote>
<p>Wenn ich eh alle Pixel durchgehen muss, dann ist es doch egal ob ich x oder y in der inneren Schleife habe. Ich verstehe die Logik hinter der Aussage nicht.</p>
</blockquote>
<p>Je nachdem, ob du zeilen- oder spaltenweise iterierst, passierst du die einzelnen Elemente entweder mit fortlaufender Adressierung oder hast dauernd Sprünge. Letzteres ist relativ cache-unfreundlich und daher tendenziell langsam.</p>
</blockquote>
<p>Nicht nur was den Cache angeht, sondern auch den eigentlichen Vorgang des Holens an sich. Wenn die Daten noch nicht im Cache sind und aus dem Hauptspeicher (SDRAM) geholt werden müssen, dann bekommt man durch das Springen ein Problem:<br />
<a href="http://en.wikipedia.org/wiki/Prefetch_buffer" rel="nofollow">http://en.wikipedia.org/wiki/Prefetch_buffer</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366522</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 20 Nov 2013 12:27:34 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 12:41:16 GMT]]></title><description><![CDATA[<p>CppNeuland schrieb:</p>
<blockquote>
<p>Ach, da gibt es wirklich einen Standard für? Ich meine, es ist doch eher von Algorithmus vorgegeben, was in die inneren Schleife gehört. Wenn aber nur über alle Tupel durchiteriert werden muss, dann ist es doch piepegal was innen ist.</p>
</blockquote>
<p>Es ist kein Standard im Sinne eines ISO-Standards, aber darin, wie so ein array als &quot;default&quot; interpretiert wird: ist es eine Menge von untereinander angeordneten<br />
Zeilen(Row-Major) oder aneinandergereihte spalten (column-major).</p>
<p>Und wenn man in den Performancebereich geht, ändern sich die Algorithmen mit der Speicheranordnung. Bei Matrixzerlegungen wird dann zum Beispiel nicht A zerlegt, sondern A^T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366525</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 20 Nov 2013 12:41:16 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 14:34:54 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>CppNeuland schrieb:</p>
<blockquote>
<p>Wenn ich eh alle Pixel durchgehen muss, dann ist es doch egal ob ich x oder y in der inneren Schleife habe. Ich verstehe die Logik hinter der Aussage nicht.</p>
</blockquote>
<p>Je nachdem, ob du zeilen- oder spaltenweise iterierst, passierst du die einzelnen Elemente entweder mit fortlaufender Adressierung oder hast dauernd Sprünge. Letzteres ist relativ cache-unfreundlich und daher tendenziell langsam.</p>
</blockquote>
<p>Nicht nur was den Cache angeht, sondern auch den eigentlichen Vorgang des Holens an sich. Wenn die Daten noch nicht im Cache sind und aus dem Hauptspeicher (SDRAM) geholt werden müssen, dann bekommt man durch das Springen ein Problem:<br />
<a href="http://en.wikipedia.org/wiki/Prefetch_buffer" rel="nofollow">http://en.wikipedia.org/wiki/Prefetch_buffer</a></p>
</blockquote>
<p>Ich habe doch keine Sprünge wenn ich vorher meine Reihenfolge von x uns y an den Algo angepasst habe und dementsprechend meine Datenstruktur anlege und darum geht es doch hier, ob man immer x,y oder y,x als Standard nimmt.</p>
<p>Wenn der Algo in der inneren Schleife x nimmt dann nimmt man die eine Reihenfolge und im anderen Fall halt die andere. Nur so vermeidet man doch die Sprünge der Speicherzugriffe, indem man immer die Datenstruktur anlegt, die dem Algo am besten die Daten liefert. Da kann es doch keinen Standard geben.</p>
<p>Oder sehe ich da was völlig falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366555</guid><dc:creator><![CDATA[CppNeuland]]></dc:creator><pubDate>Wed, 20 Nov 2013 14:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 15:09:27 GMT]]></title><description><![CDATA[<p>CppNeuland schrieb:</p>
<blockquote>
<p>Oder sehe ich da was völlig falsch?</p>
</blockquote>
<p>Ich glaube ja. Ich bin mir ehrlich gesagt nicht sicher, was du meinst. Was sollen denn x und y sein? Du scheinst irgendwie sehr viel Gewicht auf Namensgebung zu setzen, dabei sind Namen das Unwichtigste überhaupt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366572</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 20 Nov 2013 15:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 15:22:39 GMT]]></title><description><![CDATA[<p>Ich denke diese Präsentation wird dir helfen zu verstehen (ab Slide 14 wird es für dich interessant):<br />
<a href="http://channel9.msdn.com/Events/Build/2013/4-329" rel="nofollow">http://channel9.msdn.com/Events/Build/2013/4-329</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366577</guid><dc:creator><![CDATA[noname123]]></dc:creator><pubDate>Wed, 20 Nov 2013 15:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 15:35:00 GMT]]></title><description><![CDATA[<p>Die ursprünglich Frage war:</p>
<blockquote>
<p>Mir ist immer noch nicht ganz klar, ob ich bei 2D-Arrays zuerst die Y-Dimension oder zuerst die X-Dimension nehmen soll.</p>
</blockquote>
<p>Meine Antworten zusammengefasst: Das hängt vom Algo ab was zuerst kommt. Wenn der Algo in der inneren Schleife x nimmt, dann sollte dies hintereinander im Speicher liegen, ansonsten halt y.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366581</guid><dc:creator><![CDATA[CppNeuland]]></dc:creator><pubDate>Wed, 20 Nov 2013 15:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 15:58:53 GMT]]></title><description><![CDATA[<p>CppNeuland schrieb:</p>
<blockquote>
<p>Die ursprünglich Frage war:</p>
<blockquote>
<p>Mir ist immer noch nicht ganz klar, ob ich bei 2D-Arrays zuerst die Y-Dimension oder zuerst die X-Dimension nehmen soll.</p>
</blockquote>
<p>Meine Antworten zusammengefasst: Das hängt vom Algo ab was zuerst kommt. Wenn der Algo in der inneren Schleife x nimmt, dann sollte dies hintereinander im Speicher liegen, ansonsten halt y.</p>
</blockquote>
<p>Und was hat das mit X und Y zu tun? Aber ja: Die Antwort sollte sein, dass du deine Daten so organisierst, dass in der innersten Schleife über den rechtesten Index iteriert wird. Und jeweils so weiter, wenn es sich um mehr als zwei Verschachtelungen handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366593</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 20 Nov 2013 15:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array: [x][y] oder [y][x]? on Wed, 20 Nov 2013 16:09:04 GMT]]></title><description><![CDATA[<p>X = X-Dimension<br />
Y = Y-Dimension</p>
<p>Die Bezeichner bezogen sich auf die, in Ausgangsfrage genannten, Daten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366599</guid><dc:creator><![CDATA[CppNeuland]]></dc:creator><pubDate>Wed, 20 Nov 2013 16:09:04 GMT</pubDate></item></channel></rss>