<?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[(Erledigt) Array dynamik (ohne vektor)]]></title><description><![CDATA[<p>Hallo erstmal,</p>
<p>edit:: Problem gelöst, siehe <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1692735.html#1692735" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1692735.html#1692735</a></p>
<p>ich bin noch ne in diesem Forum, und bin auch noch ein Anfänger (wenn nicht sogar blutiger Anfänger) in c++ (Befasse mich normalerweise eher mit webprogrammierung)</p>
<p>Ich habe vor kurzem mit der Ausbildung zum Fachinformatiker für Anwendungsentwicklung angefangen und habe eine Aufgabe bekommen,</p>
<p>ich hatte im vorfeld eine doppelt verkettete liste erstellt die auch ihren dienst tut, und soll jetzt eine Baumstrucktur daraus machen, folglich aus nur einem Unterelement sollen unbegrenzt viele neue werden.</p>
<p>Rahmenbedigung:</p>
<p>Ich soll dies mithilfe eines <strong>Statischen Arrays</strong> machen.(<strong>ohne</strong> Vektor)</p>
<pre><code class="language-cpp">struct TListenKnoten
	{
		string nodename;
		string wert;
		TListenKnoten *lastelement;
		TListenKnoten **Sarray;

	};

	struct TListenKnoten *handle=0;
	struct TListenKnoten *startknoten=0;
	struct TListenKnoten *neu=0;
	int count;
	string auswahl=&quot;0&quot;;
</code></pre>
<p>Das ist erstmal das struckturelement an sich und die dazugehörigen globalen variablen.<br />
mein ansatz ist, das ich im TListenKnoten einen Pointer habe der auf ein array aus pointern zeigt die wiederrum auf die folgenden structurelemente zeigen.</p>
<p>der array soll nach aufgabenstellung (ich würds ja anders machen...) beim erstellen eines neuen subelements in einen anderen array rüberkopiert werden und im anschluss ein neuer array erstellt werden der ein feld größer ist, und dann natürlich zurückkopieren.</p>
<p>Hier de Quelltext bezüglich des Kopierens der Arrays</p>
<pre><code class="language-cpp">TListenKnoten *arbackup[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])];
			count=0;			
			while (handle-&gt;Sarray[count]!=NULL)
			{
				arbackup[count]=handle-&gt;Sarray[count];
				count++;
			}

			delete handle-&gt;Sarray;

			handle-&gt;Sarray=new struct TListenKnoten*[sizeof(arbackup)/sizeof(arbackup[0])+1];
			count=0;
			while (count&lt;(sizeof(arbackup)/sizeof(arbackup[0])))
			{
				handle-&gt;Sarray[count]=arbackup[count];
				count++;
			}
</code></pre>
<p>die <strong>Aktuelle Problematik</strong> ist, das scheinbar irgendetwas beim Kopieren der Arrays nicht richtig funktioniert, bzw. der Array nicht wie gewünscht vergrößert wird.<br />
Bei der Ausgabe zeigt er lediglich das zuletzt erstellte element.<br />
Mein erster verdacht war, dass er das erste element überspeichert, allerdings zeigt er mir beim testen, das dieses element des arrays leer ist.</p>
<p>hat jemand ne idee bzw. nen rat für mich?</p>
<p>und btw. ich weiß, globale variablen nur setzen wenn man einen guten grund hat^^ ich habs hier einafch mal gemacht um formfehler zu vermeiden, erstmal solls funktionieren, dann wirds schön gemacht.</p>
<p>Ich bedanke mich jetzt schonmal für jede hilfestellung</p>
<p>Grüße Lodoss</p>
<p>PS: Hier nochmal der gesamte Quelltext:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

	struct TListenKnoten
	{
		string nodename;
		string wert;
		TListenKnoten *lastelement;
		TListenKnoten **Sarray;

	};

	struct TListenKnoten *handle=0;
	struct TListenKnoten *startknoten=0;
	struct TListenKnoten *neu=0;
	int count;
	string auswahl=&quot;0&quot;;
	int durchlauf=0;

int main ( int argc, char *argv[] )
{

	do
	{
		cout &lt;&lt; &quot;[## Menü ##]&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;[n] Neuen Knoten erstellen&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;[l] Liste&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;[q] Ende&quot; &lt;&lt; endl;

		count=0;
		if (handle!=0) {
			while (handle-&gt;Sarray[count]!=NULL)
			{
				cout &lt;&lt; &quot;[&quot; &lt;&lt; count &lt;&lt; &quot;]&quot; &lt;&lt; handle-&gt;Sarray[count]-&gt;nodename &lt;&lt; &quot; &quot;;
				count++;
			}
		}
		cout &lt;&lt; endl;

		cin &gt;&gt; auswahl;

		if (auswahl==&quot;n&quot;) 
		{
			if (startknoten==0)
			{
				neu = new struct TListenKnoten;
				startknoten=neu;
				handle=startknoten;
			}
			else
			{
				neu = new struct TListenKnoten;
			}

			neu-&gt;Sarray = new struct TListenKnoten*[0];
			cout &lt;&lt; &quot;Name des Knotens:&quot; &lt;&lt; endl;
			cin &gt;&gt; neu-&gt;nodename;
			cout &lt;&lt; &quot;Wert des Knotens: &quot; &lt;&lt; endl;
			cin &gt;&gt; neu-&gt;wert;

			count=0;

			while (handle-&gt;Sarray[count]!=NULL)
			{
				count++;
			}

			// Kommentar: Array Vergrößern

			TListenKnoten *arbackup[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])];
			count=0;			
			while (handle-&gt;Sarray[count]!=NULL)
			{
				arbackup[count]=handle-&gt;Sarray[count];
				count++;
			}

			delete handle-&gt;Sarray;

			handle-&gt;Sarray=new struct TListenKnoten*[sizeof(arbackup)/sizeof(arbackup[0])+1];
			count=0;
			while (count&lt;(sizeof(arbackup)/sizeof(arbackup[0])))
			{
				handle-&gt;Sarray[count]=arbackup[count];
				count++;
			}
			cout &lt;&lt; &quot;count ist: &quot; &lt;&lt; count &lt;&lt; endl;

			handle-&gt;Sarray[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])-1]=neu;
		}

		if (auswahl==&quot;l&quot;)
		{
			//rekursive schleife aller elemente =&gt; funktion

			/*
			funktion X
			{
				for (&quot;anzahl subelemente vom derzeitigen hangeln&quot;)
				{
					cout name des subelements
					aufruf von &quot;funktion X&quot; mit hangeln auf subelement

				}
			}
			*/
		}

	}
	while (auswahl!=&quot;q&quot;);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/238145/erledigt-array-dynamik-ohne-vektor</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 01:58:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238145.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Apr 2009 09:21:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 09:58:37 GMT]]></title><description><![CDATA[<p>Hallo erstmal,</p>
<p>edit:: Problem gelöst, siehe <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1692735.html#1692735" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-1692735.html#1692735</a></p>
<p>ich bin noch ne in diesem Forum, und bin auch noch ein Anfänger (wenn nicht sogar blutiger Anfänger) in c++ (Befasse mich normalerweise eher mit webprogrammierung)</p>
<p>Ich habe vor kurzem mit der Ausbildung zum Fachinformatiker für Anwendungsentwicklung angefangen und habe eine Aufgabe bekommen,</p>
<p>ich hatte im vorfeld eine doppelt verkettete liste erstellt die auch ihren dienst tut, und soll jetzt eine Baumstrucktur daraus machen, folglich aus nur einem Unterelement sollen unbegrenzt viele neue werden.</p>
<p>Rahmenbedigung:</p>
<p>Ich soll dies mithilfe eines <strong>Statischen Arrays</strong> machen.(<strong>ohne</strong> Vektor)</p>
<pre><code class="language-cpp">struct TListenKnoten
	{
		string nodename;
		string wert;
		TListenKnoten *lastelement;
		TListenKnoten **Sarray;

	};

	struct TListenKnoten *handle=0;
	struct TListenKnoten *startknoten=0;
	struct TListenKnoten *neu=0;
	int count;
	string auswahl=&quot;0&quot;;
</code></pre>
<p>Das ist erstmal das struckturelement an sich und die dazugehörigen globalen variablen.<br />
mein ansatz ist, das ich im TListenKnoten einen Pointer habe der auf ein array aus pointern zeigt die wiederrum auf die folgenden structurelemente zeigen.</p>
<p>der array soll nach aufgabenstellung (ich würds ja anders machen...) beim erstellen eines neuen subelements in einen anderen array rüberkopiert werden und im anschluss ein neuer array erstellt werden der ein feld größer ist, und dann natürlich zurückkopieren.</p>
<p>Hier de Quelltext bezüglich des Kopierens der Arrays</p>
<pre><code class="language-cpp">TListenKnoten *arbackup[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])];
			count=0;			
			while (handle-&gt;Sarray[count]!=NULL)
			{
				arbackup[count]=handle-&gt;Sarray[count];
				count++;
			}

			delete handle-&gt;Sarray;

			handle-&gt;Sarray=new struct TListenKnoten*[sizeof(arbackup)/sizeof(arbackup[0])+1];
			count=0;
			while (count&lt;(sizeof(arbackup)/sizeof(arbackup[0])))
			{
				handle-&gt;Sarray[count]=arbackup[count];
				count++;
			}
</code></pre>
<p>die <strong>Aktuelle Problematik</strong> ist, das scheinbar irgendetwas beim Kopieren der Arrays nicht richtig funktioniert, bzw. der Array nicht wie gewünscht vergrößert wird.<br />
Bei der Ausgabe zeigt er lediglich das zuletzt erstellte element.<br />
Mein erster verdacht war, dass er das erste element überspeichert, allerdings zeigt er mir beim testen, das dieses element des arrays leer ist.</p>
<p>hat jemand ne idee bzw. nen rat für mich?</p>
<p>und btw. ich weiß, globale variablen nur setzen wenn man einen guten grund hat^^ ich habs hier einafch mal gemacht um formfehler zu vermeiden, erstmal solls funktionieren, dann wirds schön gemacht.</p>
<p>Ich bedanke mich jetzt schonmal für jede hilfestellung</p>
<p>Grüße Lodoss</p>
<p>PS: Hier nochmal der gesamte Quelltext:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

	struct TListenKnoten
	{
		string nodename;
		string wert;
		TListenKnoten *lastelement;
		TListenKnoten **Sarray;

	};

	struct TListenKnoten *handle=0;
	struct TListenKnoten *startknoten=0;
	struct TListenKnoten *neu=0;
	int count;
	string auswahl=&quot;0&quot;;
	int durchlauf=0;

int main ( int argc, char *argv[] )
{

	do
	{
		cout &lt;&lt; &quot;[## Menü ##]&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;[n] Neuen Knoten erstellen&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;[l] Liste&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;[q] Ende&quot; &lt;&lt; endl;

		count=0;
		if (handle!=0) {
			while (handle-&gt;Sarray[count]!=NULL)
			{
				cout &lt;&lt; &quot;[&quot; &lt;&lt; count &lt;&lt; &quot;]&quot; &lt;&lt; handle-&gt;Sarray[count]-&gt;nodename &lt;&lt; &quot; &quot;;
				count++;
			}
		}
		cout &lt;&lt; endl;

		cin &gt;&gt; auswahl;

		if (auswahl==&quot;n&quot;) 
		{
			if (startknoten==0)
			{
				neu = new struct TListenKnoten;
				startknoten=neu;
				handle=startknoten;
			}
			else
			{
				neu = new struct TListenKnoten;
			}

			neu-&gt;Sarray = new struct TListenKnoten*[0];
			cout &lt;&lt; &quot;Name des Knotens:&quot; &lt;&lt; endl;
			cin &gt;&gt; neu-&gt;nodename;
			cout &lt;&lt; &quot;Wert des Knotens: &quot; &lt;&lt; endl;
			cin &gt;&gt; neu-&gt;wert;

			count=0;

			while (handle-&gt;Sarray[count]!=NULL)
			{
				count++;
			}

			// Kommentar: Array Vergrößern

			TListenKnoten *arbackup[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])];
			count=0;			
			while (handle-&gt;Sarray[count]!=NULL)
			{
				arbackup[count]=handle-&gt;Sarray[count];
				count++;
			}

			delete handle-&gt;Sarray;

			handle-&gt;Sarray=new struct TListenKnoten*[sizeof(arbackup)/sizeof(arbackup[0])+1];
			count=0;
			while (count&lt;(sizeof(arbackup)/sizeof(arbackup[0])))
			{
				handle-&gt;Sarray[count]=arbackup[count];
				count++;
			}
			cout &lt;&lt; &quot;count ist: &quot; &lt;&lt; count &lt;&lt; endl;

			handle-&gt;Sarray[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])-1]=neu;
		}

		if (auswahl==&quot;l&quot;)
		{
			//rekursive schleife aller elemente =&gt; funktion

			/*
			funktion X
			{
				for (&quot;anzahl subelemente vom derzeitigen hangeln&quot;)
				{
					cout name des subelements
					aufruf von &quot;funktion X&quot; mit hangeln auf subelement

				}
			}
			*/
		}

	}
	while (auswahl!=&quot;q&quot;);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1692137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692137</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Wed, 08 Apr 2009 09:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 09:28:46 GMT]]></title><description><![CDATA[<p>std::vector</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692141</guid><dc:creator><![CDATA[kurz&amp;amp;knapp]]></dc:creator><pubDate>Tue, 07 Apr 2009 09:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 10:03:41 GMT]]></title><description><![CDATA[<p>kurz&amp;knapp schrieb:</p>
<blockquote>
<p>std::vector</p>
</blockquote>
<p>jop, wäre auch mein ansatz, es geht bei der aufgabe aber primär darum, die Baumstruktur zu verdeutlichen, ich würds auch gerne mit nem vektor machen, allerdings ist die aufgabenstellung explezit: &quot;statischer array&quot;</p>
<p>PS: wirklich kurz und knapp die antwort^^</p>
<p>PS: ich habe natürlich auch schon die boardsuche ausgeschöpft, das inetrnet durchstöbert und tutorials durchgeschaut, entweder nix egfunden oder eben &quot;benutz nen vektor&quot; (was ja richtig ist, nur in meinem falle nicht umsetzbar)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692155</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Tue, 07 Apr 2009 10:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 12:36:31 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich soll dies mithilfe eines Statischen Arrays machen.(ohne Vektor)</p>
</blockquote>
<p>deine arrays sind aber nicht statisch.</p>
<p>warum bringt man leuten eigentlich c++ bei, wenn sie es nicht benutzen dürfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692289</guid><dc:creator><![CDATA[kurz&amp;amp;knapp]]></dc:creator><pubDate>Tue, 07 Apr 2009 12:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 12:38:15 GMT]]></title><description><![CDATA[<p>kurz&amp;knapp schrieb:</p>
<blockquote>
<blockquote>
<p>Ich soll dies mithilfe eines Statischen Arrays machen.(ohne Vektor)</p>
</blockquote>
<p>deine arrays sind aber nicht statisch.</p>
<p>warum bringt man leuten eigentlich c++ bei, wenn sie es nicht benutzen dürfen?</p>
</blockquote>
<p>streng genommen sind es nicht mal arrays...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692290</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 07 Apr 2009 12:38:15 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 13:01:22 GMT]]></title><description><![CDATA[<p>kurz&amp;knapp schrieb:</p>
<blockquote>
<blockquote>
<p>Ich soll dies mithilfe eines Statischen Arrays machen.(ohne Vektor)</p>
</blockquote>
<p>deine arrays sind aber nicht statisch.</p>
<p>warum bringt man leuten eigentlich c++ bei, wenn sie es nicht benutzen dürfen?</p>
</blockquote>
<p>nunja, beibringen ist das eine, verständnis das andere <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="😉"
    /><br />
es geht primär ums verstnis der struckturen und deren funktionsweise, die man sonst so leichtfertig benutzt</p>
<blockquote>
<p>streng genommen sind es nicht mal arrays...</p>
</blockquote>
<p>inwiefern, was unterscheidet mein &quot;konstruckt&quot; von dem ich denke das es ein array ist von einem array? ist ne reine neugierfrage am rande, sollte aber nicht zu weit vom thema wegführen</p>
<p>derweil habe ich auch noch weiter versucht das problem zu lösen und mir mal<br />
(sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])<br />
ausgeben lassen, der zurückgegebene wert ist immer 1, daher vermute ich den fehler hier:</p>
<pre><code class="language-cpp">handle-&gt;Sarray=new struct TListenKnoten*[(sizeof(arbackup)/sizeof(arbackup[0]))+1];
</code></pre>
<p>sodass der neue array nicht größer als der alte ist, und damit nicht über das erste folgeelement hinausgeht</p>
<p>allerdings ist dies nur eine vermutung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692311</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Tue, 07 Apr 2009 13:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 13:15:40 GMT]]></title><description><![CDATA[<p>Lodoss schrieb:</p>
<blockquote>
<p>es geht primär ums verstnis der struckturen und deren funktionsweise, die man sonst so leichtfertig benutzt</p>
</blockquote>
<p>wenn es um strukturen verstehe ich erst recht nicht, warum vector nicht benutzt werden darf...</p>
<blockquote>
<p>derweil habe ich auch noch weiter versucht das problem zu lösen und mir mal<br />
(sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])<br />
ausgeben lassen, der zurückgegebene wert ist immer 1</p>
</blockquote>
<p>das ist nicht weiter verwunderlich, weil du die größe eines zeigers auf einen zeiger durch die größe eines zeigers teilst.<br />
wenn du in den ausdruck mal die konkreten typen reinschreibst, wird es vielleicht klar:<br />
<code>sizeof(TListenKnoten**)/sizeof(TListenKnoten*)</code><br />
ein TListenKnoten** ist genau so groß wie ein TListenKnoten*, deshalb kommt da immer 1 raus.</p>
<p>ein statisches array sieht übrigens so aus:</p>
<pre><code class="language-cpp">int array[100]; // größe muss eine konstante sein
</code></pre>
<p>new hat da nix verloren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692323</guid><dc:creator><![CDATA[kurz&amp;amp;knapp]]></dc:creator><pubDate>Tue, 07 Apr 2009 13:15:40 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 13:42:48 GMT]]></title><description><![CDATA[<p>zuallererst, vielen dank für eure antworten, vorallem Kurz&amp;Knapp, dass ist eine plausible erklärung für dieses mir unerklärliche verhalten des programms, ich lass nochmal von mir hören wenn ich das problem gelöst habe. (keine sorge, keine frage, sondern meine problemlösung, damit die selbe frage nicht nochmal gestellt werden muss [wie so oft])</p>
<p>was die arays betrifft, nach meinem verständnis ist also ein statisches array ein array, dessen größe konstant ist und von programmstart an klar ist, ein dynamisches array ein array dessen größe sich zur laufzeit ergibt und ein vector ist ein &quot;array&quot; dessen größe sich wärend der laufzeit ändern kann, liege ich damit richtig?<br />
(euer wissen und eure zeit soll ja nicht verschwendet sein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692335</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Tue, 07 Apr 2009 13:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 19:15:20 GMT]]></title><description><![CDATA[<p>Lodoss schrieb:</p>
<blockquote>
<p>was die arays betrifft, nach meinem verständnis ist also ein statisches array ein array, dessen größe konstant ist und von programmstart an klar ist, ein dynamisches array ein array dessen größe sich zur laufzeit ergibt und ein vector ist ein &quot;array&quot; dessen größe sich wärend der laufzeit ändern kann, liege ich damit richtig?</p>
</blockquote>
<p>Ja, damit liegst du richtig. Wobei <code>std::vector</code> eine gesamte Klasse ist, die noch viel mehr Funktionalität bietet. Aber das hast du wahrscheinlich mit den Anführungszeichen gemeint.</p>
<p>kurz&amp;knapp schrieb:</p>
<blockquote>
<p>warum bringt man leuten eigentlich c++ bei, wenn sie es nicht benutzen dürfen?</p>
</blockquote>
<p>Weil sie gewisse Dinge nicht lernen, wenn sie von Anfang an nur STL benutzen. Was eher vorkommt, ist die Tatsache, dass sie danach nicht mal zu solchen Dingen greifen und für Programme, die effizient sein sollen, dauernd Low-Level-Dinge anwenden. Und viele Leute haben auf diese Weise trotzdem das Gefühl, einen Grossteil von C++ verstanden zu haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692520</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 07 Apr 2009 19:15:20 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 21:44:16 GMT]]></title><description><![CDATA[<p>kurz&amp;knapp schrieb:</p>
<blockquote>
<p>warum bringt man leuten eigentlich c++ bei, wenn sie es nicht benutzen dürfen?</p>
</blockquote>
<p>Ich fidne es zu trainingszwecken nicht verkehrt wenn die leute wissen wie es innen drin aussieht und in die lage kommen sowas auch selbst mal zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692574</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 07 Apr 2009 21:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 21:57:10 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>kurz&amp;knapp schrieb:</p>
<blockquote>
<p>warum bringt man leuten eigentlich c++ bei, wenn sie es nicht benutzen dürfen?</p>
</blockquote>
<p>Ich fidne es zu trainingszwecken nicht verkehrt wenn die leute wissen wie es innen drin aussieht und in die lage kommen sowas auch selbst mal zu schreiben.</p>
</blockquote>
<p>Naja. Was hast du denn an Einblick gewonnen, wenn du</p>
<pre><code class="language-cpp">int* a = new int[23];
</code></pre>
<p>schreibst anstelle von</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; a(23);
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692578</guid><dc:creator><![CDATA[Captain Obvious]]></dc:creator><pubDate>Tue, 07 Apr 2009 21:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 22:06:03 GMT]]></title><description><![CDATA[<p>Vector besteht aber schon aus ein bischen mehr als nem Konstruktoraufruf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692581</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 07 Apr 2009 22:06:03 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 22:52:43 GMT]]></title><description><![CDATA[<p>Das schon. Aber was gewinnt man dadurch, wenn man willkürlich einen Teil des Ganzen ausblendet und nur noch das betrachtet was übrig bleibt?</p>
<p>Wenn man lernen soll mit Zeigern und Allokationen umzugehen, warum wird dann nicht C gelehrt statt so ein kleines Subset von C++? Es ist doch völlig realitätsfern, in C++ mit new und raw arrays zu hantieren. Das tun doch nur die, die es (noch) nicht verstanden haben. Oder denen man es halt so beigebracht hat und nun glauben, sie kennen C++, obwohl sie nicht mal an der Oberfläche gekratzt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692588</guid><dc:creator><![CDATA[Captain Obvious]]></dc:creator><pubDate>Tue, 07 Apr 2009 22:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Tue, 07 Apr 2009 22:59:16 GMT]]></title><description><![CDATA[<p>Naja aber sie es mal von der rein Inhaltlichen und übungsmäßigen Seite. Du sagst OK schreibt ne Vector-Klasse mit allem drum und dran, dann zeigste den Leuten das es genau diese klasse schon über std gibt und das sie die dann auch benutzen sollen. Das selbst schreiben so einer Klasse zeigt den leuten imerhin wie sie im ganzen Funktioniert und ist meiner Meinung nach für Anfänger durchaus ne gute Übung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692592</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 07 Apr 2009 22:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 00:01:14 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">TListenKnoten *arbackup[sizeof(handle-&gt;Sarray)/sizeof(handle-&gt;Sarray[0])];
</code></pre>
</blockquote>
<p>Da Sarray in deinem Beispiel ein Zeiger ist, ist das da oben totaler Unfug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692605</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 08 Apr 2009 00:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 06:43:07 GMT]]></title><description><![CDATA[<blockquote>
<p>was die arays betrifft, nach meinem verständnis ist also ein statisches array ein array, dessen größe konstant ist und von programmstart an klar ist, ein dynamisches array ein array dessen größe sich zur laufzeit ergibt und ein vector ist ein &quot;array&quot; dessen größe sich wärend der laufzeit ändern kann, liege ich damit richtig?</p>
</blockquote>
<p>statisches Array - klar, groesse muss zur kompilezeit bekannt sein. Das ist die einschraenkung fuer den User. Die eigentliche Bosonderheit ist doch aber, das das Ding komplett aufn stack liegt ! Also die aufwendige dynamische Speicherverwaltung ned beansprucht wird.</p>
<p>dynamisches Array - der Speicher fuer das Ding wird dynamisch erzeugt, also ueber die Speicherverwaltung. Dafuer braucht erst zur Laufzeit die groesse bekannt sein.</p>
<p>std::vector - STL-Implementation eines Dynamischen Arrays mit ner Menge Komfort drumherum.</p>
<p>Wenn jemand wirklich beruflich programmieren will/soll, find ich es schon sinnvoll, ihm mal paar standard klassen nachprogrammieren zu lassen. Jemand der mit dynamischen C-Arrays z.b. umgehen kann, tut sich viel leichter, kosten (Laufzeit) fuer die so tollen komfortfunktionen der STL und anderer Frameworks abzuschaetzen ....</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692643</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Wed, 08 Apr 2009 06:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 08:30:50 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>... kosten (Laufzeit) fuer die so tollen komfortfunktionen der STL und anderer Frameworks abzuschaetzen ....</p>
<p>Ciao ...</p>
</blockquote>
<p>Welche Kosten meinst Du denn? Erkläre das mal am Beispiel eines <code>std::vector</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692681</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 08 Apr 2009 08:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 09:33:06 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>std::vector - STL-Implementation eines Dynamischen Arrays mit ner Menge Komfort drumherum.</p>
<p>kosten (Laufzeit) fuer die so tollen komfortfunktionen der STL und anderer Frameworks abzuschaetzen ....</p>
</blockquote>
<p>Hast du einen Beweis, das die Komfortfunktionen von vector Mehrkosten haben, als wenn man es selber implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692718</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Wed, 08 Apr 2009 09:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 09:56:59 GMT]]></title><description><![CDATA[<p>so, das ursprüngliche problem ist gelöst</p>
<p>Lösungsweg:</p>
<p>habe dem array einen zusätzlichen wert verpasst und den array via schleife gezählt bis dieser wert drinnsteht</p>
<p>mit der dadurch gewonnenen länge des arrays konnte ich durch new die richtige neue größe erstellen</p>
<p>vielen dank nochmal an alle helfer</p>
<p>PS: nette diskussion die hier vom zaune gebrochen ist, ich lese ausmerksam mit <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/1692735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692735</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Wed, 08 Apr 2009 09:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 11:51:31 GMT]]></title><description><![CDATA[<blockquote>
<p>ast du einen Beweis, das die Komfortfunktionen von vector Mehrkosten haben, als wenn man es selber implementiert?</p>
</blockquote>
<p>Hab ich irgendwas von <strong>Mehr</strong>kosten gegenueber eines dynamischen Arrays geschrieben ?<br />
Ich meinte damit, das durch die &quot;Komfortfunktionen&quot; bei der STL, viele &quot;Programmierer&quot; sich weniger Sorgen machen, was genau da passiert !</p>
<p>der Vector ist doch das perfekteste beispiel dafuer!</p>
<p>Bei nem Dynamischen Array bin ich doch gezwungen, mir vorab gedanken zu machen, wie gross ich es machen muss, beim vector ?<br />
Wie oft sieht man, das nen Vector mitm standard Ctor angelegt wird und dann massenweisse daten &quot;reingepumpt&quot; werden ?<br />
Wer verwendet denn den Ctor wo ich ich schon mal die Groesse des puffers fuer den vector anlegen kann ?</p>
<p>Wenn man selber mal ne Methode implementiert hat, wo nen Dynamisches Array &quot;vergroessert&quot; werden muesste, erinnert man sich vielleicht mal dran, beim naechsten std::vector::push_back ^^</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692811</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Wed, 08 Apr 2009 11:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 12:12:21 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>Wenn man selber mal ne Methode implementiert hat, wo nen Dynamisches Array &quot;vergroessert&quot; werden muesste, erinnert man sich vielleicht mal dran, beim naechsten std::vector::push_back ^^</p>
</blockquote>
<p>mit der gleichen begründung kann man auch new und delete ablehnen, weil man da ja auch nicht weiß, was genau passiert. also direkt die speicherverwaltung des kernels benutzen... moment! da weiß man ja auch nicht was passiert. also keine betriebssystemfunktionen benutzen, statt dessen direkt die hardware programmieren. also müssen alle erst mal assembler lernen... moment! die mnemonics sind ja auch eine abstraktion, die den eigentlichen kern der sache verschleiern... also besser die instruktionen direkt binär codiert eingeben. am besten in den selbstgebauten computer, damit man sich mal gedanken drüber macht, wie das ding innendrin funktioniert!</p>
<p>p.s.: du plenkst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692829</guid><dc:creator><![CDATA[kurz&amp;amp;knapp]]></dc:creator><pubDate>Wed, 08 Apr 2009 12:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 12:31:08 GMT]]></title><description><![CDATA[<p>Sag mal, was liesst Du da in meinen Posts ? zuviel zu wenig ?</p>
<p>Ich lehne die STL ueberhaupt ned ab, und ich sehe auch nur <strong>einen</strong> Grund, ein <strong>dynamisches</strong> Array durch einen std::vector <strong>nicht</strong> zuersetzen, und das ist zu Übungszwecken im nichtproduktiven Einsatz!<br />
Ich plädiere nur dafuer, sich Gedanken zu machen, wie man die Dinger richtig und effektiv einsetzt !</p>
<blockquote>
<p>damit man sich mal gedanken drüber macht, wie das ding innendrin funktioniert!</p>
</blockquote>
<p>Mal ehrlich, wenn Dir das Laufzeitverhalten egal ist, meinst Du nicht das ne andere Programmiersprache als C++ vielleicht bissi besser geeignet waere ?</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692841</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Wed, 08 Apr 2009 12:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 12:56:24 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<blockquote>
<p>damit man sich mal gedanken drüber macht, wie das ding innendrin funktioniert!</p>
</blockquote>
<p>Mal ehrlich, wenn Dir das Laufzeitverhalten egal ist, meinst Du nicht das ne andere Programmiersprache als C++ vielleicht bissi besser geeignet waere ?</p>
<p>Ciao ...</p>
</blockquote>
<p>Man benutzt nicht C++ ausschließlich wegen der (angeblichen) überlegenen Performance. Sondern auch, weil die Sprache diverse Eigenschaften hat, die mal nichts mit Performance zu tun haben.</p>
<p>Übrigens: einfach nur im Ctor von Vector eine Reservierung anzugeben, muß nicht unbedingt performanter sein, als einfach nur push_back zu benutzen. Denn push_back kann auch ziemlich intelligent implementiert werden. Und die Reservierung ist auch kein Allheilmittel. Es spielen viele Faktoren eine Rolle.</p>
<p>Insgesamt ist dein Argument, das man kein Vector zuerst lernen soll, weil man ja keinen Ctor-Parameter übergibt ziemlich schwach. Weil ich genauso argumentieren kann, das jemand, der versucht schlauer zu sein als die Standard-Lib (was hast du eigentlich immer mit deiner STL?), das Ganze auch nach hinten los gehen kann. Veruschen schlauer als die Stdlib zusein, sollte man erst, wenn man wirklich merkt, das die Software langsam und unperformant ist. Und dann auch nur, wenn man den Profiler benutzt.</p>
<p>Weiterhin: wann lohnt sich denn das Reservieren? Ganau, wenn man sehr viele Objekte haben wird, z.B. 1 Mio. Elemente. Aber werden das dann eher kleine oder große Objekte sein? Eher kleine! Ist der std-Allocator für kleine Objekte optimiert? Nein! Also macht es nicht unbedingt Sinn, sondern man benutzt schon mal einen anderen Allocator oder einen Memmory-Pool oder einen Smartheap-Library.</p>
<p>Puh... meine Fresse.</p>
<p>Weiter im Text: du hast große Objekte. Hem, davon kann ich aber nicht viele auf einmal reservieren. Also nur wenige Objekte. Hem, wenige Objekte lohnt sich nicht unbedingt zu reservieren. Das kann push_back ganz gut alleine machen.</p>
<p>Also wann muß ich denn reservieren bzw. wann lohnt es sich wirklich?</p>
<p>Das hängt von vielen Faktoren ab. Ich sage dazu nur: da muß man echt schon Profi mit Erfahrung sein, um DAS alles entscheiden und umsetzen zu können. Für einen Einsteiger eine total sinnlose Überforderung, ihm zu sagen, er soll schlauer als die Std-lib sein.</p>
<p>Einen Anfänger lasse ich lieber einfach einen Vector benutzen. Und lasse einen Menschen mit Erfahrung das ganze evtl. optimieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692859</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Wed, 08 Apr 2009 12:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 13:27:46 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<blockquote>
<p>damit man sich mal gedanken drüber macht, wie das ding innendrin funktioniert!</p>
</blockquote>
<p>Mal ehrlich, wenn Dir das Laufzeitverhalten egal ist, meinst Du nicht das ne andere Programmiersprache als C++ vielleicht bissi besser geeignet waere ?</p>
</blockquote>
<p>laufzeitverhalten spielt für einen anfänger überhaupt keine rolle. ein anfänger soll lernen, eine sprache *richtig* einzusetzen. und c++ setzt man richtig ein, indem man die standardbibliothek verwendet statt alles selbst und schlechter zu implementieren.</p>
<p>ich bezweifle außerdem, dass von einem anfänger selbst gestrickte arrays ein besseres laufzeitverhalten aufweisen als vector. von den memory-leaks ganz zu schweigen. schau dir doch den code des OP an: hat er doch gleich schon mal das falsche delete benutzt. wahrscheinlich kennt sein lehrer auch nicht den unterschied zwischen delete und delete[].</p>
<p>es wäre viel schlauer gewesen, diesen quasi c-code gleich in c zu programmieren, statt ihn umständlich in c++ nachzubauen. das ist es nämlich, was ihm so beigebracht wird: in c++ programmieren wie in c.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692885</guid><dc:creator><![CDATA[kurz&amp;amp;knapp]]></dc:creator><pubDate>Wed, 08 Apr 2009 13:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 13:46:15 GMT]]></title><description><![CDATA[<p>Bulli schrieb:</p>
<blockquote>
<p>Weiterhin: wann lohnt sich denn das Reservieren? Ganau, wenn man sehr viele Objekte haben wird, z.B. 1 Mio. Elemente. Aber werden das dann eher kleine oder große Objekte sein? Eher kleine! Ist der std-Allocator für kleine Objekte optimiert? Nein!</p>
</blockquote>
<p><strong>Doch!</strong><br />
malloc ist eher für große optimiert und operator new für kleine. falls der compilerbauer mitgedacht hat, und davon darf man ausgehen. nur kann man mit threadlokalen oder gar objektgebundenen freispeicherlisten oder fixed-size-allokatoren noch mehr rausholen.<br />
und der weg dahin führt unweigerlich darüber, daß man sich mal ein kleines dynamisches array selber baut. wie will man's denn sonst lernen? man sollte immer neugierig bleiben. und der versuch, die standardbibliothek zu schlagen, ist eswas sehr edles und vielleicht besser, als die hundertste mp3-player-bedienoberfläche zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692899</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 08 Apr 2009 13:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to (Erledigt) Array dynamik (ohne vektor) on Wed, 08 Apr 2009 13:51:51 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>und der weg dahin führt unweigerlich darüber, daß man sich mal ein kleines dynamisches array selber baut. wie will man's denn sonst lernen?</p>
</blockquote>
<p>man beachte:</p>
<p>Lodoss schrieb:</p>
<blockquote>
<p>bin auch noch ein Anfänger (wenn nicht sogar blutiger Anfänger) in c++</p>
</blockquote>
<p>warum soll ein blutiger anfänger so tief einsteigen?</p>
<blockquote>
<p>der versuch, die standardbibliothek zu schlagen, ist eswas sehr edles und vielleicht besser, als die hundertste mp3-player-bedienoberfläche zu schreiben.</p>
</blockquote>
<p>dazu müsste man erst mal wissen, dass es die standardbibliothek gibt, was sie tut und wie man sie benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692902</guid><dc:creator><![CDATA[kurz&amp;amp;knapp]]></dc:creator><pubDate>Wed, 08 Apr 2009 13:51:51 GMT</pubDate></item></channel></rss>