<?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 Arraygröße]]></title><description><![CDATA[<p>Hallo, ich bin neu hier im forum und hab direkt die erste frage ^^<br />
Zu mir:<br />
Ich bin 15 (fast 16) Jahre alt und wohne in NRW.<br />
Mit programmieren bin ich vor 2 jahren angefangen mit php websiten zu programmieren und mache das auch jetzt noch zwischendurch sehr gerne.<br />
Ich programmiere seid fast 1.5 jahren mit c++ (besonders im bereich der spieleprogammierung), kenne mich also ganz gut mit c++ aus, hab aber selten noch kleine schwierigkeiten wie diese.</p>
<p>Ich weiß echt nicht woran das liegt, ich schreib immer riesen Programme und scheitere dann an irgentwelchem kleinkram, der alles zum stillstehen bringt.<br />
Also, bevor ich mein problem schildere, möchte ich einmal kurz sagen:<br />
Wie einige von euch wissen, programmiere ich mein eigenes 2d game engine.<br />
mitlerweile kann ich auch schon sprites rendern, aber das problem ist dabei die varibale anzahl der sprites.<br />
Alle sprites sind in einem vector aufgereit, jede sprite besteht aus genau einem vertex (ja nur einen, ich arbeite mit geometrieshadern).</p>
<p>Zum Problem:</p>
<pre><code>const int numSprites = spritevec.size()-1;
vertex verts[numSprites];

for(unsigned int i=0; i&lt;spritevec.size(); i++){
	verts[i] = spritevec[i]-&gt;getAsVertex();
}
</code></pre>
<p>logischer weise ist in diesem code &quot;spritevec.size()-1&quot; kein konstantwert und weil man einen konstantwert brauch um die arraygröße anzugeben, hab ich ein problem. ich kann als vertex-array leider KEINE vectoren verwenden.</p>
<p>Meine Frage ist also, wie kann ich den vertex-array variable an die größe des spritevec anzupassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302040/dynamische-arraygröße</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 15:16:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302040.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Apr 2012 21:33:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 21:35:52 GMT]]></title><description><![CDATA[<p>Hallo, ich bin neu hier im forum und hab direkt die erste frage ^^<br />
Zu mir:<br />
Ich bin 15 (fast 16) Jahre alt und wohne in NRW.<br />
Mit programmieren bin ich vor 2 jahren angefangen mit php websiten zu programmieren und mache das auch jetzt noch zwischendurch sehr gerne.<br />
Ich programmiere seid fast 1.5 jahren mit c++ (besonders im bereich der spieleprogammierung), kenne mich also ganz gut mit c++ aus, hab aber selten noch kleine schwierigkeiten wie diese.</p>
<p>Ich weiß echt nicht woran das liegt, ich schreib immer riesen Programme und scheitere dann an irgentwelchem kleinkram, der alles zum stillstehen bringt.<br />
Also, bevor ich mein problem schildere, möchte ich einmal kurz sagen:<br />
Wie einige von euch wissen, programmiere ich mein eigenes 2d game engine.<br />
mitlerweile kann ich auch schon sprites rendern, aber das problem ist dabei die varibale anzahl der sprites.<br />
Alle sprites sind in einem vector aufgereit, jede sprite besteht aus genau einem vertex (ja nur einen, ich arbeite mit geometrieshadern).</p>
<p>Zum Problem:</p>
<pre><code>const int numSprites = spritevec.size()-1;
vertex verts[numSprites];

for(unsigned int i=0; i&lt;spritevec.size(); i++){
	verts[i] = spritevec[i]-&gt;getAsVertex();
}
</code></pre>
<p>logischer weise ist in diesem code &quot;spritevec.size()-1&quot; kein konstantwert und weil man einen konstantwert brauch um die arraygröße anzugeben, hab ich ein problem. ich kann als vertex-array leider KEINE vectoren verwenden.</p>
<p>Meine Frage ist also, wie kann ich den vertex-array variable an die größe des spritevec anzupassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200332</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Mon, 09 Apr 2012 21:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 21:36:08 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>ich kann als vertex-array leider KEINE vectoren verwenden.</p>
</blockquote>
<p>Wie kommst du darauf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200333</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 09 Apr 2012 21:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 21:39:06 GMT]]></title><description><![CDATA[<p>klappt sons irgentwie nicht, weil ich sie dx10 als pointer auf einen array übergeben muss :S falls einer weiß wie das doch geht, sag bitte bescheid.</p>
<p>hier mal ein bisschen mehr vom code:</p>
<pre><code>const int numSprites = spritevec.size()-1;
	vertex verts[numSprites];

	for(unsigned int i=0; i&lt;spritevec.size(); i++){
		verts[i] = spritevec[i]-&gt;getAsVertex();
	}

	//create vertex buffer
	D3D10_SUBRESOURCE_DATA initData;
	initData.pSysMem = &amp;verts;

	D3D10_BUFFER_DESC bd;
	bd.Usage = D3D10_USAGE_DEFAULT;
	bd.ByteWidth = sizeof( vertex ) * (numSprites);
	bd.BindFlags = D3D10_BIND_VERTEX_BUFFER;
	bd.CPUAccessFlags = 0;
	bd.MiscFlags = 0;

	if ( FAILED( D3DDevice-&gt;CreateBuffer( &amp;bd, &amp;initData, &amp;VertexBuffer ) ) ) { MessageBox(NULL, L&quot;Could not update the vertex buffer!&quot;, L&quot;Fatal Error&quot;, MB_ICONERROR); return; }

	// Set vertex buffer
	UINT stride = sizeof( vertex );
	UINT offset = 0;
	D3DDevice-&gt;IASetVertexBuffers( 0, 1, &amp;VertexBuffer, &amp;stride, &amp;offset );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2200334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200334</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Mon, 09 Apr 2012 21:39:06 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 21:55:42 GMT]]></title><description><![CDATA[<p>Einen Zeiger zum ersten Element des Vektors bekommst du mit <code>&amp;verts[0]</code> .<br />
Die Elemente in einem Vektor folgen im Speicher direkt aufeinander wie in einem normalen Array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200339</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 09 Apr 2012 21:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 22:00:36 GMT]]></title><description><![CDATA[<p>also könnte ich einfach den array zu einem vector machen?<br />
funktioniert aber irgentwie nicht, dann werden die sprites nicht mehr angezeigt</p>
<pre><code>std::vector&lt;vertex&gt; verts;

	for(unsigned int i=0; i&lt;spritevec.size(); i++){
		verts.push_back(spritevec[i]-&gt;getAsVertex());
	}
	//create vertex buffer
	D3D10_SUBRESOURCE_DATA initData;
	initData.pSysMem = &amp;verts;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2200340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200340</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Mon, 09 Apr 2012 22:00:36 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 22:10:15 GMT]]></title><description><![CDATA[<p>Vektor != Elemente des Vektors.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200342</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 09 Apr 2012 22:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 22:14:28 GMT]]></title><description><![CDATA[<p>wie geht es denn richtig, kannst du mir den richtigen code geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200343</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Mon, 09 Apr 2012 22:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Mon, 09 Apr 2012 22:31:38 GMT]]></title><description><![CDATA[<p>Siehe:</p>
<blockquote>
<p>Einen Zeiger zum ersten Element des Vektors bekommst du mit &amp;verts[0].</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2200345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200345</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 09 Apr 2012 22:31:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 09:49:43 GMT]]></title><description><![CDATA[<p>aber ich brauche doch einen pointer auf alle elemnte (als array)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200425</guid><dc:creator><![CDATA[gamer8o4]]></dc:creator><pubDate>Tue, 10 Apr 2012 09:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 10:11:56 GMT]]></title><description><![CDATA[<p>gamer8o4 schrieb:</p>
<blockquote>
<p>aber ich brauche doch einen pointer auf alle elemnte (als array)</p>
</blockquote>
<p>Nein, ganz sicher nicht. Das wäre die ungewöhnlichste Bibliothek aller Zeiten. Jetzt kommt wohl der Punkt, an dem man auch als C++-ler mal die Feinheiten von rohen Arrays angucken muss, da man dieses Wissen für die Benutzung von C-Bibliotheken braucht. Dann wirst du sehen, dass der Tipp schon richtig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200435</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 10 Apr 2012 10:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 12:02:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

void schnittstelle(int count, const int* elems)
{
  for (int i=0; i&lt;count; ++i) {
    std::cout &lt;&lt; ' ' &lt;&lt; elems[i];
  }
  std::cout &lt;&lt; std::endl;
}

int main()
{
  std::vector&lt;int&gt; vec;
  vec.push_back(2);
  vec.push_back(7);
  vec.push_back(1);
  vec.push_back(8);
  vec.push_back(2);
  vec.push_back(8);
  vec.push_back(1);
  vec.push_back(8);
  vec.push_back(2);
  vec.push_back(8);
  schnittstelle(vec.size(),vec.empty() ? 0 : &amp;vec[0]);
}
</code></pre>
<p>Das funktioniert, weil der C++ Standard garantiert, dass die Elemente eines <code>std::vector</code> s alle direkt hintereinander im Speicher liegen, so, wie es auch bei einem &quot;normalen Array&quot; der Fall ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200468</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 10 Apr 2012 12:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 13:15:11 GMT]]></title><description><![CDATA[<p>Üblicherweise kann man von eine solchen C-Schnittstelle auch erwarten, dass die bei übergabe einer Größe von 0 den Zeiger nicht anfasst. <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/2200486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200486</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 10 Apr 2012 13:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 13:30:14 GMT]]></title><description><![CDATA[<p>Nein, bei mir waere das nicht ueblich. Darueber hinaus fasst die beispielhafte <code>schnittstelle</code> den Zeiger auch nicht bei count == 0 an, d.h. ist die Abfrage <code>vec.empty()</code> ueberfluessig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200489</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 10 Apr 2012 13:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 13:46:15 GMT]]></title><description><![CDATA[<p>Verlesen? Genau das habe ich doch gesagt. <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/2200493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200493</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 10 Apr 2012 13:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 13:51:03 GMT]]></title><description><![CDATA[<p>Das <code>empty</code> ist immer notwending, da <code>&amp;vec[0]</code> ansonsten UB erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200494</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 10 Apr 2012 13:51:03 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 14:00:27 GMT]]></title><description><![CDATA[<p>Oder einfach .data() verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200496</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 10 Apr 2012 14:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 14:08:59 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Üblicherweise kann man von eine solchen C-Schnittstelle auch erwarten, dass die bei übergabe einer Größe von 0 den Zeiger nicht anfasst. <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>Das erwarte ich ja auch. Das Blöde ist nur, dass ich im empty-Fall den operator[] nicht verwenden darf. Hier ist die Abfrage natürlich überflüssig, da genug Elemente im Vektor sind. Aber ich wollte diese Zeile unabhängig vom Befüllen des Vektors haben, so dass das Programm kein UB hervorruft, wenn man die push_back-Zeilen entfernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200498</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 10 Apr 2012 14:08:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 14:10:21 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Oder einfach .data() verwenden.</p>
</blockquote>
<p>data kenne ich bei vector nicht. Ich dachte, das gäb's nur bei std::string &amp; co.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200499</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 10 Apr 2012 14:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 14:13:43 GMT]]></title><description><![CDATA[<p><a href="http://stackoverflow.com/questions/6212572/whats-the-status-of-stdvectordata" rel="nofollow">http://stackoverflow.com/questions/6212572/whats-the-status-of-stdvectordata</a><br />
<a href="http://en.cppreference.com/w/cpp/container/vector/data" rel="nofollow">http://en.cppreference.com/w/cpp/container/vector/data</a></p>
<p>In C++11 gibt es .data auch bei vectoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200500</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Tue, 10 Apr 2012 14:13:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Arraygröße on Tue, 10 Apr 2012 14:18:10 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>In C++11 gibt es .data auch bei vectoren.</p>
</blockquote>
<p>Ja, habs auch gerade nochmal nachgeguckt. Aber erst, wie gesagt, ab C++11.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200502</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 10 Apr 2012 14:18:10 GMT</pubDate></item></channel></rss>