<?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[Array initialisieren [gelöst!]]]></title><description><![CDATA[<p>Hi,</p>
<p>wie kann ich ein Array dynamisch mit mehreren Werten initialisieren?</p>
<p>Folgendes funktioniert:</p>
<pre><code class="language-cpp">float a[] = {0.5, 0.2};
</code></pre>
<p>Ich möchte aber das Array in Abhängigkeit von mehreren Bedingungen mit unterschiedlichen Werten initialisieren bzw. diese zuweisen. Das sollte etwa so aussehen:</p>
<pre><code class="language-cpp">float *a;

if(...)
   a = new float[] = {0.5, 0.2};
else if(...)
   a = new float[] = {0.3, 0.8, 0.6, 0.1};
else if(...)
   a = new float[] = {0.7, 0.6, 0.9};
</code></pre>
<p>Wie ist so etwas möglich?</p>
<p>Gruß</p>
<p>Sharpie</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253587/array-initialisieren-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 04:20:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253587.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Nov 2009 13:05:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array initialisieren [gelöst!] on Tue, 10 Nov 2009 16:33:14 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wie kann ich ein Array dynamisch mit mehreren Werten initialisieren?</p>
<p>Folgendes funktioniert:</p>
<pre><code class="language-cpp">float a[] = {0.5, 0.2};
</code></pre>
<p>Ich möchte aber das Array in Abhängigkeit von mehreren Bedingungen mit unterschiedlichen Werten initialisieren bzw. diese zuweisen. Das sollte etwa so aussehen:</p>
<pre><code class="language-cpp">float *a;

if(...)
   a = new float[] = {0.5, 0.2};
else if(...)
   a = new float[] = {0.3, 0.8, 0.6, 0.1};
else if(...)
   a = new float[] = {0.7, 0.6, 0.9};
</code></pre>
<p>Wie ist so etwas möglich?</p>
<p>Gruß</p>
<p>Sharpie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1803160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1803160</guid><dc:creator><![CDATA[Sharpie]]></dc:creator><pubDate>Tue, 10 Nov 2009 16:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Array initialisieren [gelöst!] on Wed, 04 Nov 2009 13:18:53 GMT]]></title><description><![CDATA[<p>Das macht man mit new und delete. Das ist aber nicht unbedingt sehr anfängerfreundlich, weil man ziemlich aufpassen muss, das alles sauber abläuft. Früher oder später wird man sich als C++ Programmierer new und delete aber angucken müssen.</p>
<p>Fürs Erste empfehle ich dir aber die Container aus der STL, z.B. std::vector. Die sind viel einfacher zu bedienen und man kann da schon sehr viel mit machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1803171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1803171</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Nov 2009 13:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Array initialisieren [gelöst!] on Wed, 04 Nov 2009 13:32:33 GMT]]></title><description><![CDATA[<p>Mit C++-Standardmitteln geht das so nicht. Man kann zwar z.B. verschiedene konstante Arrays vordefinieren, und diese dann in Abhängigkeit einer Bedingung einen Pointer zuweisen, aber so richtig toll ist das nicht. Dabei geht z.B. leider auch die Größeninformation flöten.<br />
Schöner ist z.B. <code>std::vector</code> in Verbindung mit <code>boost::assign::list_of</code><br />
Die doofe Lösung würde so aussehen (mit handverlesener Größeninfo):</p>
<pre><code class="language-cpp">float const arr1[] = {0.5, 0.2};
    float const arr2[] = {0.3, 0.8, 0.6, 0.1};
    float const arr3[] = {0.7, 0.6, 0.9};

    //...

    struct Holder
    {
        std::size_t size;
        float const * arr;
    };

    //...

    Holder arr;

    if(condition1)
    {
        arr.size = 2;
        arr.arr = arr1;
    }
    else if((condition2)
    {
        arr.size = 4;
        arr.arr = arr2;
    }
    else
    {
        arr.size = 3;
        arr.arr = arr3;
    }
</code></pre>
<p>Mit boost.assign könnte man das so machen:</p>
<pre><code class="language-cpp">std::vector&lt;float&gt; vec;

    if(condition1)
    {
        vec = boost::assign::list_of(0.5)(0.2);
    }
    else if((condition2)
    {
        vec = boost::assign::list_of(0.2)(0.8)(0.6)(0.1);
    }
    else
    {
        vec = boost::assign::list_of(0.7)(0.6)(0.9);
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1803182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1803182</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 04 Nov 2009 13:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Array initialisieren [gelöst!] on Wed, 04 Nov 2009 15:07:03 GMT]]></title><description><![CDATA[<p>Also jetzt habe ich zwei Aussagen:</p>
<blockquote>
<p>Das macht man mit new und delete</p>
</blockquote>
<p>und</p>
<blockquote>
<p>Mit C++-Standardmitteln geht das so nicht.</p>
</blockquote>
<p>Was ist jetzt richtig? Falls es mit new und delete funktioniert, ist die Frage wie?</p>
<p>Mit dem vector als alternative könnte ich mich anfreunden, aber eine zusätzliche Bibliothek möchte ich nicht verwenden, was ja mit &quot;boost&quot; der Fall wäre!</p>
<p>Gibt es eine alternative dazu wie ich mehrere Werte auf einmal hinzufügen kann ohne jedes mal &quot;push_back&quot; oder ähnliches zu verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1803274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1803274</guid><dc:creator><![CDATA[Sharpie]]></dc:creator><pubDate>Wed, 04 Nov 2009 15:07:03 GMT</pubDate></item><item><title><![CDATA[Reply to Array initialisieren [gelöst!] on Wed, 04 Nov 2009 15:25:10 GMT]]></title><description><![CDATA[<p>Sharpie schrieb:</p>
<blockquote>
<p>Also jetzt habe ich zwei Aussagen:</p>
<blockquote>
<p>Das macht man mit new und delete</p>
</blockquote>
<p>und</p>
<blockquote>
<p>Mit C++-Standardmitteln geht das so nicht.</p>
</blockquote>
<p>Was ist jetzt richtig? Falls es mit new und delete funktioniert, ist die Frage wie?</p>
</blockquote>
<p>Tut mir leid, ich hatte nicht genau genug gelesen. Auf deine exakte Fragestellung gibt Tachyon die richtige Antwort.</p>
<blockquote>
<p>Mit dem vector als alternative könnte ich mich anfreunden, aber eine zusätzliche Bibliothek möchte ich nicht verwenden, was ja mit &quot;boost&quot; der Fall wäre!</p>
<p>Gibt es eine alternative dazu wie ich mehrere Werte auf einmal hinzufügen kann ohne jedes mal &quot;push_back&quot; oder ähnliches zu verwenden?</p>
</blockquote>
<p>Es gibt verschiedene Methoden, um einem STL-Container eine Reihe von Werten zuzuweisen. Für gleichartige Werte und für Kopien kann man assign nehmen, für Werte die sich aus einer Funktion ergeben, kann man generate nehmen. Wenn man ganz frei Werte ohne Muster massenhaft zuweisen möchte, muss man sich das selber zusammenbauen oder wie von Tachyon vorgeschlagen etwas Fertiges wie boost::assign nehmen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1803295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1803295</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Nov 2009 15:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Array initialisieren [gelöst!] on Tue, 10 Nov 2009 16:31:49 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe. Ich habe es jetzt wie vorgeschlagen mit boost::assign erledigt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806122</guid><dc:creator><![CDATA[Sharpie]]></dc:creator><pubDate>Tue, 10 Nov 2009 16:31:49 GMT</pubDate></item></channel></rss>