<?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[dynamische Arrays]]></title><description><![CDATA[<p>Hi,<br />
ich hätte noch eine Frage...</p>
<p>Wie kann ich dynamische Arrays erstellen ??</p>
<p>Die ersten 3 sollen variabel sein, zwei weitere fix.</p>
<p>Das Problem ist, mit Vektoren muss ich alle auch einmal initalisieren...</p>
<p>Ich stelle mir das so vor:</p>
<pre><code>// Objektnummer einlesen
Array=new float [Objektnummer][][][3][3]

for(i=0;i&lt;Objektnummer;i++)
{
    Array[i]=new float [nrFrames][nrFaces][3][3];

    //Daten einlesen...

}
</code></pre>
<p>Aber so geht das halt nicht...</p>
<p>Könnt ihr mir gelfen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252650/dynamische-arrays</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 01:59:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252650.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Oct 2009 19:10:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:10:22 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich hätte noch eine Frage...</p>
<p>Wie kann ich dynamische Arrays erstellen ??</p>
<p>Die ersten 3 sollen variabel sein, zwei weitere fix.</p>
<p>Das Problem ist, mit Vektoren muss ich alle auch einmal initalisieren...</p>
<p>Ich stelle mir das so vor:</p>
<pre><code>// Objektnummer einlesen
Array=new float [Objektnummer][][][3][3]

for(i=0;i&lt;Objektnummer;i++)
{
    Array[i]=new float [nrFrames][nrFaces][3][3];

    //Daten einlesen...

}
</code></pre>
<p>Aber so geht das halt nicht...</p>
<p>Könnt ihr mir gelfen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796648</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:14:39 GMT]]></title><description><![CDATA[<p>Du könntest z.B einen Standardcontainer benutzen.<br />
z.B kannst du <code>std::vector</code> auch verschachteln und dann so etwas, wie du willst auch machen. Allerdings sehe ich nicht genau, wo dein Problem ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796655</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:14:39 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:20:10 GMT]]></title><description><![CDATA[<pre><code>OBJS=new float5D(numOBJ,float4D(MaxFrames, float3D(MaxVertices/3,float2D(3, float1D(3,0)))));
</code></pre>
<p>numOBJ kenne ich hier schon, aber MaxFrames und MaxVertices noch nicht.</p>
<p>Die werden für jedes Objekt einzeln bestimmt, also unterschiedlich groß.</p>
<p>Geht so was überhaupt mit Vektor ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796662</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:21:09 GMT]]></title><description><![CDATA[<p>Joa, klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796663</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:40:55 GMT]]></title><description><![CDATA[<p>und wie mache ich dass das zweite element (zweite klammer [] halt) verschieden groß sein kann ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796677</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:43:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;vector&gt;

int main ()
{
 std::vector&lt;std::vector&lt;int&gt; &gt; v(2,std::vector&lt;int&gt;());
 v[0].push_back (2);
 v[0].push_back (3);
 v[1].push_back (1);
}
</code></pre>
<p>Da hat das erste Element (ein vector von int) 2 weitere Elemente (2 ints) und der zweite lediglich eines (1 int).</p>
<p>Das kannst du jetzt natürlich beliebig verländern, indem du diesen vector nochmal in einen vector packst usw. Aber ob das viel Sinn macht sei mal dahingestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796686</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 22 Oct 2009 19:53:31 GMT]]></title><description><![CDATA[<p>Was genau macht &quot;push_back&quot; ?</p>
<p>Und wie wäre das in meinem Beispiel ?</p>
<p>1. variabel + bekannt<br />
2. 3. variabel eins nach dem anderen bekannt<br />
4. 5. fix</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796697</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Thu, 22 Oct 2009 19:53:31 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Fri, 23 Oct 2009 00:03:24 GMT]]></title><description><![CDATA[<p>DarkShadow44 schrieb:</p>
<blockquote>
<p>Was genau macht &quot;push_back&quot; ?</p>
<p>Und wie wäre das in meinem Beispiel ?</p>
<p>1. variabel + bekannt<br />
2. 3. variabel eins nach dem anderen bekannt<br />
4. 5. fix</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>ein wenig eigeninitiative wird auch hier verlangt:<br />
<a href="http://www.cplusplus.com/reference/stl/vector/" rel="nofollow">http://www.cplusplus.com/reference/stl/vector/</a><br />
dort steht nen link zu dem, was genau push_back macht...</p>
<p>versuch doch selbst mal was und frag dann noch mal!?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796793</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 23 Oct 2009 00:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Sat, 24 Oct 2009 15:04:25 GMT]]></title><description><![CDATA[<p>Hab's geschafft ^^</p>
<p>Und wie wandle ich vector in Array um ?</p>
<p>ich nutze</p>
<pre><code>int i;

for(i=0;i&lt;numOBJ;i++)
{
//float Array[20]={0,0,0,1,0,   0,0,2,2,0,   0,0,0,0,0};
	float* Array=new float[MaxVertices[i]*5];
	//Array=new MaxVertices

	int ii;
	for(ii=0;ii&lt;MaxVertices[i]*5;ii++)
	{
		Array[ii]=(*LoadVertices)[i][ii];
	}
	glInterleavedArrays( GL_T2F_V3F, 0,Array);

	glDrawArrays( GL_TRIANGLES, 0, MaxVertices[i] );

	delete Array;
}
</code></pre>
<p>um mein Model anzuzeigen...<br />
Aber jedes mal 200 Arrays erstellen ist langsamer...</p>
<p>Wie konvertiere ich den vector für &quot;glInterleavedArrays&quot; ?</p>
<p>Und ist es besser (Performance) wenn ich ein model mit 1000 Vertices rendere, oder wenn ich (wie oben, nur abgesehen von den vielen Arrays) 20 models mit 50 Vertices rendere ??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797516</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Sat, 24 Oct 2009 15:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Sat, 24 Oct 2009 16:07:44 GMT]]></title><description><![CDATA[<p>Wie kann man denn in einem Post so viel falsch machen? xP</p>
<blockquote>
<p>Und wie wandle ich vector in Array um</p>
</blockquote>
<p>wenns sein müsste, dann tust du das so:<br />
<code>std::vector&lt;T&gt; other = to_copy;</code><br />
wenn du ein C-array brauchst:</p>
<pre><code class="language-cpp">T* other = new T[to_copy.size()];
std::copy(to_copy.begin(), to_copy.end(), other);
/*...*/
delete[] other;
</code></pre>
<p>das willst du aber gar nicht wissen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<blockquote>
<p>ich nutze<br />
[schrecklichen C/C++ Code, aber nehm lieber Code-Tags statt die dafür vorgesehenen C/C++ Tags]<br />
um mein Model anzuzeigen...</p>
</blockquote>
<blockquote>
<p>Wie konvertiere ich den vector für &quot;glInterleavedArrays&quot; ?</p>
</blockquote>
<p>Gar nicht - weil du das nicht brauchst...</p>
<blockquote>
<p>Und ist es besser (Performance) wenn ich ein model mit 1000 Vertices rendere, oder wenn ich (wie oben, nur abgesehen von den vielen Arrays) 20 models mit 50 Vertices rendere ??</p>
</blockquote>
<p>Müsstest du wohl messen, wenn dus wirklich wissen willst...<br />
Ich könnte mir vorstellen, dass es (vernachlässigbar) schneller ist das eine model mit 1000vertices zu rendern...</p>
<p>zum code(wo ziemlich viele Deklarationen fehlen, so kann ich nur raten, welche fkt was erwartet und welche variable welchen typen und inhalt hat)<br />
also hier nen vereinfachter quellcode:</p>
<pre><code class="language-cpp">void foo(float *Array, int length) { /*...*/ }

#include &lt;vector&gt;

int main()
{
  std::vector&lt;float&gt; Array;

  Array.push_back(3.f);
  Array.push_back(0.f);
  Array.push_back(1.f);
  Array.push_back(4.f);
  Array.push_back(1.f);
  Array.push_back(5.f);
  Array.push_back(9.f);
  Array.push_back(2.f);
  Array.push_back(6.f);

  foo(&amp;Array[0], Array.size());
//oder
  foo(&amp;*Array.begin(), Array.size());
}
</code></pre>
<p>allerdings gibt size eben nen size_type (idR std::size_t) zurück und wir wollen &quot;nur&quot; nen int haben - so was sollte man eigtl vermeiden (wenn z.bsp. 2^32 elemente im vector sind und int nur 2^32 versch. werte darstellen kann wird z.bsp. bei nem cast 0 draus...<br />
da müsste man sich noch was einfallen lassen, wenn so was passieren könnte aber nicht soll <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=";D"
      alt="😉"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797555</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 24 Oct 2009 16:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Sat, 24 Oct 2009 16:51:55 GMT]]></title><description><![CDATA[<p>Sor<br />
ry, ich dachte Code wäre Code <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>LoadVertices ist ein 2D Vektor aus &quot;float&quot;, [Objektnummer][Koordinate / UV-Koordinate]</p>
<p>MaxVertices ist ein 2D Vektor aus &quot;int&quot;, [Objektnummer] -&gt; Vertexanzahl des Objektes</p>
<p>Wenn ich</p>
<pre><code class="language-cpp">&amp;*LoadVertices[i].begin()
</code></pre>
<p>benutze kommt dieser Fehler:</p>
<pre><code class="language-cpp">_SCL_SECURE_VALIDATE(_Pvector == NULL || (((_Myvec *)_Pvector)-&gt;_Myfirst &lt;= _Ptr &amp;&amp; _Ptr &lt;= ((_Myvec *)_Pvector)-&gt;_Mylast));
</code></pre>
<p>wenn ich</p>
<pre><code class="language-cpp">&amp;(*LoadVertices)[i].begin()
</code></pre>
<p>benutze, kommt nur ein komischer Mix aus Rosa und Weiß raus ( drei viertel rosa oder weiß)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797576</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Sat, 24 Oct 2009 16:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Mon, 26 Oct 2009 18:49:52 GMT]]></title><description><![CDATA[<p>Wie kann ich den vector jetzt als Array übergeben ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798747</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Mon, 26 Oct 2009 19:02:56 GMT]]></title><description><![CDATA[<p>Du übergibst einen Zeiger auf das erste Element des Vektors:</p>
<pre><code class="language-cpp">const float* data = &amp;floatvector[0];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798759</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Mon, 26 Oct 2009 19:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Mon, 26 Oct 2009 19:06:31 GMT]]></title><description><![CDATA[<p>DarkShadow44 schrieb:</p>
<blockquote>
<p>Wie kann ich den vector jetzt als Array übergeben ?</p>
</blockquote>
<p>wo liegt denn das problem? Ich hab dir doch oben beide (sinnvollen) Möglichkeiten aufgeschrieben?!</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798762</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 26 Oct 2009 19:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 29 Oct 2009 16:06:54 GMT]]></title><description><![CDATA[<p>Danke,<br />
&quot;glDrawArrays&quot; nimmt scheinbar nicht nur float pointer sondern auch vector-pointer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mit &quot;begin&quot; sird er nicht als float angenommen, aber egal.</p>
<p>Jetzt gehts:</p>
<pre><code class="language-cpp">const float* data = &amp;(*LoadVertices)[i][0];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1800312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800312</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Thu, 29 Oct 2009 16:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Arrays on Thu, 29 Oct 2009 16:38:01 GMT]]></title><description><![CDATA[<p>DarkShadow44 schrieb:</p>
<blockquote>
<p>Danke,<br />
&quot;glDrawArrays&quot; nimmt scheinbar nicht nur float pointer sondern auch vector-pointer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>mit &quot;begin&quot; sird er nicht als float angenommen, aber egal.</p>
<p>Jetzt gehts:</p>
<pre><code class="language-cpp">const float* data = &amp;(*LoadVertices)[i][0];
</code></pre>
</blockquote>
<p>du solltest ja auch nicht nur begin nehmen - da ist klar, dass er es nicht kann - deshalb hab ich ja auch <code>foo(&amp;*Array.begin(), Array.size());</code> geschrieben. aber egal^^</p>
<pre><code class="language-cpp">std::vector &amp;iter_vec = LoadVertices[i];
const float* data = &amp;*iter_vec.begin();
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">std::vector &amp;iter_vec = LoadVertices[i];
const float* data = &amp;iter_vec[0];
</code></pre>
<p>so was in der Richtung würd ich vorschlagen - so erkennt wenigsten noch jmd, was du dort machst - und langsamer ists auch nicht...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1800324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800324</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 29 Oct 2009 16:38:01 GMT</pubDate></item></channel></rss>