<?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-Felder initialisieren]]></title><description><![CDATA[<p>hi,<br />
mit double a[3][2] = {{2, 2}, {3, 3}, {3, 4}} kann ich für das Feld a Speicher allokieren und gleichzeitig mit den Werten initialisieren.<br />
Wie kann ich so etwas auch mit b = new double* [3*2] machen?</p>
<p>Mir ist klar, dass mit new das 2d Feld b eigentlich über<br />
b = new double* [3]; for (int i = 0; i&lt;3;i++) b[i] = new double [2];<br />
allokiert werden muss. Gibt es aber eine Möglichkeit, das Feld b wie bei double[3][2] zu initialisieren?<br />
Der Grund ist, dass ich viele Beispieldaten habe, die am einfachsten so wie hier angegeben in Felder geschrieben werden können.<br />
Vielen Dank für eure Hilfe,<br />
tesuji (c++ neuling)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179658/2d-felder-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 09:27:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179658.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Apr 2007 09:20:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 09:20:19 GMT]]></title><description><![CDATA[<p>hi,<br />
mit double a[3][2] = {{2, 2}, {3, 3}, {3, 4}} kann ich für das Feld a Speicher allokieren und gleichzeitig mit den Werten initialisieren.<br />
Wie kann ich so etwas auch mit b = new double* [3*2] machen?</p>
<p>Mir ist klar, dass mit new das 2d Feld b eigentlich über<br />
b = new double* [3]; for (int i = 0; i&lt;3;i++) b[i] = new double [2];<br />
allokiert werden muss. Gibt es aber eine Möglichkeit, das Feld b wie bei double[3][2] zu initialisieren?<br />
Der Grund ist, dass ich viele Beispieldaten habe, die am einfachsten so wie hier angegeben in Felder geschrieben werden können.<br />
Vielen Dank für eure Hilfe,<br />
tesuji (c++ neuling)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272247</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Tue, 24 Apr 2007 09:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 09:26:03 GMT]]></title><description><![CDATA[<p>Direkt kannst du das nicht initialisieren (new[] füllt den reservierten Speicher immer per Default-Ctor auf). Aber du kannst nach dem new-Aufruf das Feld über Zuweisungen füllen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272252</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 24 Apr 2007 09:26:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 13:11:23 GMT]]></title><description><![CDATA[<p>Danke CStoll,<br />
ich hatte schon befürchtet, dass es nicht so galant gehen wird wie in double a[3][2] = {{2, 2}, {3, 3}, {3, 4}}. Wegen new (brauche es, weil die 2d-Felder unterschiedlich groß sind) muss ich nach dem Allokieren also nun schreiben: a[0][0] = 2; a[0][1] = 2; ... a[2][0] = 3; a[2][1] = 4;<br />
Noch eine Frage: Ich habe die Indexgrenzen so aufgefasst, dass der erste Index [3] die Anzahl der Zeilen und der zweite Index [2] die Anzahl der Spalten angibt. Ist das so richtig?<br />
Nochmals vielen Dank,<br />
tesuji (c++ neuling)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272439</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Tue, 24 Apr 2007 13:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 13:27:20 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>...new[] füllt den reservierten Speicher immer per Default-Ctor auf...</p>
</blockquote>
<p>Ist eigentlich die Reihenfolge, in der die Objekte konstruiert werden, definiert ?<br />
Dann könnte man was mit statics fummeln ....(zumindestens für selbstgebaute Typen).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272451</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 24 Apr 2007 13:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 14:59:22 GMT]]></title><description><![CDATA[<p>Hi Simon2,<br />
eigentlich spielt die Reihenfolge wie die Objekte kreiert werden keine Rolle. Ich habe mir auch schon im inet C++ Matrizenklassen angesehen und überlege mir nun, ob ich nicht auf Klassen umsteige. Dummerweise benutzen die in den Matrizenklassen für die Indexe runde Klammern, also a(i,j), ähnlich wie bei Pascal. Ich kann aber meine bestehenden Funktionen, sie verwenden eckige Klammern a[i][j], (es sind Beispiele aus der linearen Algebra) wegen des Aufwands nicht umschreiben. Wie sieht deine Idee mit statischer Speicherklasse aus?<br />
Viele Grüsse,<br />
tesuji</p>
<p>Eine Anmerkung zur Aufgabe: ich habe etwa 50 Aufgabenbeispiele aus der linearen Algebra, bei denen die Matrizen (2d-Felder) mit jeweils 3 bis 8 Zeilen und Spalten alle vorgegeben sind. Und ich soll nun für die verschiedenen Algorithmen, z.B. bei linearen Gleichungssystemen u.a. die Gauß-Elimination die Zahlenbeispiele codieren. Die schöne Initialisierung z.B. double a[3][3] = {{2, 2,1}, {3, 3,-1}, {-2, 3, 4}} geht ja nicht, weil ich sonst in den Funktionen auch festverdrahtete Dimensionen schreiben müsste. z.B. Gauss(int n, double a[3][3]). Der Gauss wird aber auch noch für andere Dimensionen wie a[6][6] und a[8][8] verwendet. Es sollte also besser Gauss(int n, double** a) sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272536</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Tue, 24 Apr 2007 14:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 15:39:43 GMT]]></title><description><![CDATA[<p>@ tesuij</p>
<p>tesuji schrieb:</p>
<blockquote>
<p>Hi Simon2,<br />
eigentlich spielt die Reihenfolge wie die Objekte kreiert werden keine Rolle. Ich habe mir auch schon im inet C++ Matrizenklassen angesehen und überlege mir nun, ob ich nicht auf Klassen umsteige. Dummerweise benutzen die in den Matrizenklassen für die Indexe runde Klammern, also a(i,j), ähnlich wie bei Pascal. Ich kann aber meine bestehenden Funktionen, sie verwenden eckige Klammern a[i][j], (es sind Beispiele aus der linearen Algebra) wegen des Aufwands nicht umschreiben.<br />
...</p>
</blockquote>
<p>Zugriff auf Vektoren und Matrizen mit eckigen Klammern [] , [][] geht<br />
auch, wenn man die Operatoren überlädt, siehe z.B.<br />
<a href="http://www.oop-mit-cpp.de/cppbuch/k9/mathvek/" rel="nofollow">http://www.oop-mit-cpp.de/cppbuch/k9/mathvek/</a><br />
sowie<br />
<a href="http://www.oop-mit-cpp.de/cppbuch/k11/matrix/" rel="nofollow">http://www.oop-mit-cpp.de/cppbuch/k11/matrix/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272569</guid><dc:creator><![CDATA[helpie]]></dc:creator><pubDate>Tue, 24 Apr 2007 15:39:43 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 15:49:35 GMT]]></title><description><![CDATA[<p>tesuji schrieb:</p>
<blockquote>
<p>Hi Simon2,<br />
eigentlich spielt die Reihenfolge wie die Objekte kreiert werden keine Rolle. ...</p>
</blockquote>
<p>Wenn man &quot;etwas mit statics fummeln&quot; will, schon.</p>
<p>tesuji schrieb:</p>
<blockquote>
<p>...Wie sieht deine Idee mit statischer Speicherklasse aus? ...</p>
</blockquote>
<p>Nicht schön <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>
<pre><code class="language-cpp">namespace MyIntInitializer {
      static int count;
      static size_t xDim;
      static size_t yDim;
      static int init() { return count++; } // Hier kann man auch mit xDim und yDim rumspielen
   }

   struct MyInt {
      int i;
      MyInt() : i(MyIntInitializer::init()) {}

   };

   int main() {
      MyIntInitializer::count = 0;
      MyIntInitializer::xDim = 3;
      MyIntInitializer::yDim = 4;
      MyInt* pa = new MyInt[MyIntInitializer::xDim*MyIntInitializer::yDim];
      for(size_t i=0; i&lt;MyIntInitializer::xDim*MyIntInitializer::yDim; ++i) cout &lt;&lt; i &lt;&lt; &quot;. &quot; &lt;&lt; pa[i].i &lt;&lt; &quot;\n&quot;;

      delete[] pa;
      return 0;
   }
</code></pre>
<p>Das &quot;.i&quot; kannst Du (wie schon gesagt) mit geeigneter Überladung vom operator[] wegmachen...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272571</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 24 Apr 2007 15:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Tue, 24 Apr 2007 16:31:20 GMT]]></title><description><![CDATA[<p>Simon2, ganz herzlichen Dank!<br />
ich werde nun versuchen, in deinen Code einzutauchen !<br />
tesuji</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272618</guid><dc:creator><![CDATA[tesuji]]></dc:creator><pubDate>Tue, 24 Apr 2007 16:31:20 GMT</pubDate></item><item><title><![CDATA[Reply to 2d-Felder initialisieren on Wed, 25 Apr 2007 07:17:10 GMT]]></title><description><![CDATA[<p>tesuji schrieb:</p>
<blockquote>
<p>Simon2, ganz herzlichen Dank!<br />
ich werde nun versuchen, in deinen Code einzutauchen !<br />
tesuji</p>
</blockquote>
<p>Ist nicht wirklich kompliziert - er nutzt einfach aus, dass eine parameterlose Funktion/Konstruktor Zugriff auf globale Variablen hat. So kann man auch solchen Funktionen/Konstruktoren quasi &quot;Parameter unterschieben&quot;.<br />
Um die &quot;Häßlichkeit globaler Variablen&quot; ein wenig zu kaschieren <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="😉"
    /> , habe ich sie gesammelt in einen namespace gepackt.</p>
<p>Ach ja. Threadsafe ist das Ganze so natürlich auch nicht ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272939</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 07:17:10 GMT</pubDate></item></channel></rss>