<?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[[gelöst] Heap verliert scheinbar grundlos seinen Inhalt]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Klasse, welche einen Heap enthält. Stelle ich einen Inhalt in den Heap, funktioniert das auch, aber anschließend ist der Heap wieder leer. Meine einzige Erklärung wäre ein Konflikt zwischen lokalen und globalen Variablen, aber ich finde keinen.</p>
<p>Erstellung des Objekts:</p>
<pre><code class="language-cpp">LO512::LO512()
{
	//512 Bit Speicher reservieren
	FirstByte = new unsigned char[64];
	//Speicher auf 0 setzen
	for(int i = 0; i &lt; 64; i++)
	{
		FirstByte[i] = 0;
	}
}
</code></pre>
<p>Zerstören des Objekts:</p>
<pre><code class="language-cpp">LO512::~LO512()
{
	//Speicher wieder frei geben
	delete FirstByte;
	//Zeiger auf 0 setzen
	FirstByte = 0;
}
</code></pre>
<p>Den Heap befüllen:</p>
<pre><code class="language-cpp">LO512&amp; LO512::operator=(const double&amp; src)
{
	//Veränderbare Kopie der const double machen
	double Value = src;
	unsigned char ByteValue = 0;
	//Alle Bytes durchlaufen
	for(int i = 0; i &lt; 64; i++)
	{
		//Bytewert für neuen Byte reseten
		ByteValue = 0;

		//Hier kommen einige Operationen, welche ByteValue einen Wert zuweisen, in meinem momentanen Beispielprogramm erhält das erste Byte den Wert 128 und die folgenden den Wert 0

		FirstByte[i] = ByteValue;

        //Bei jedem Schleifendurchlauf tritt kein Fehler auf, der erste Byte des Heaps hat also den Wert 128, so, wie es sein soll
		if(*FirstByte != 128)
			int a = 1/0;
	}

    //Hier besteht der komplette Heap nun plötzlich nur noch aus Nullen
	for(int i = 0; i &lt; 64; i++)
	{
		if(FirstByte[i] != 0)
			int a = 1/0;
	}

	return *this;
}
</code></pre>
<p>Findet jemand meinen Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299802/gelöst-heap-verliert-scheinbar-grundlos-seinen-inhalt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 03:12:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299802.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Feb 2012 19:54:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:49:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Klasse, welche einen Heap enthält. Stelle ich einen Inhalt in den Heap, funktioniert das auch, aber anschließend ist der Heap wieder leer. Meine einzige Erklärung wäre ein Konflikt zwischen lokalen und globalen Variablen, aber ich finde keinen.</p>
<p>Erstellung des Objekts:</p>
<pre><code class="language-cpp">LO512::LO512()
{
	//512 Bit Speicher reservieren
	FirstByte = new unsigned char[64];
	//Speicher auf 0 setzen
	for(int i = 0; i &lt; 64; i++)
	{
		FirstByte[i] = 0;
	}
}
</code></pre>
<p>Zerstören des Objekts:</p>
<pre><code class="language-cpp">LO512::~LO512()
{
	//Speicher wieder frei geben
	delete FirstByte;
	//Zeiger auf 0 setzen
	FirstByte = 0;
}
</code></pre>
<p>Den Heap befüllen:</p>
<pre><code class="language-cpp">LO512&amp; LO512::operator=(const double&amp; src)
{
	//Veränderbare Kopie der const double machen
	double Value = src;
	unsigned char ByteValue = 0;
	//Alle Bytes durchlaufen
	for(int i = 0; i &lt; 64; i++)
	{
		//Bytewert für neuen Byte reseten
		ByteValue = 0;

		//Hier kommen einige Operationen, welche ByteValue einen Wert zuweisen, in meinem momentanen Beispielprogramm erhält das erste Byte den Wert 128 und die folgenden den Wert 0

		FirstByte[i] = ByteValue;

        //Bei jedem Schleifendurchlauf tritt kein Fehler auf, der erste Byte des Heaps hat also den Wert 128, so, wie es sein soll
		if(*FirstByte != 128)
			int a = 1/0;
	}

    //Hier besteht der komplette Heap nun plötzlich nur noch aus Nullen
	for(int i = 0; i &lt; 64; i++)
	{
		if(FirstByte[i] != 0)
			int a = 1/0;
	}

	return *this;
}
</code></pre>
<p>Findet jemand meinen Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182775</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:17:05 GMT]]></title><description><![CDATA[<p>Schau mal genau hin, du hast nie außer Nullern in den &quot;heap&quot; geschrieben. Btw. in der If-Bedinung prüfst, ob der Wert NICHT 128 ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182779</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:17:05 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:25:02 GMT]]></title><description><![CDATA[<p>Little Programmer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//Hier besteht der komplette Heap nun plötzlich nur noch aus Nullen
	for(int i = 0; i &lt; 64; i++)
	{
		if(FirstByte[i] != 0)
			int a = 1/0;
	}
</code></pre>
<p>Findet jemand meinen Fehler?</p>
</blockquote>
<p>1. Du hast nicht <code>std::vector&lt;unsigned char&gt;</code> benutzt.<br />
2. Woran erkennst du, dass das nur aus Nullen besteht? Glaubst du etwa, dass ein Compiler für eine Division durch Null sinnvollen Code generiert? Das ist undefiniertes Verhalten, wir sind hier doch nicht in Java! Was du suchst ist <code>assert</code> , ein Debugger oder wenigstens <code>cout</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182783</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:23:53 GMT]]></title><description><![CDATA[<p>Zeig vollständige Beispiele. Ich wette mal, du hast die Regel der großen drei verletzt. Und ich hoffe mal, das ist nur zur Übung, nicht weil du das produktiv benutzt. Aber selbst dann sind da ein paar fragwürdige Entscheidungen drin, wie die Frage, wieso du dein internes Array dynamisch anforderst, obwohl die Größe doch statisch ist, oder wenn's unbedingt dynamisch sein soll, warum dann nicht vector? In beiden Fällen bräuchtest du dir dann gar keine Sorgen mehr machen. Und das Nullsetzen ist auch ein bisschen umständlich. Und was dein Zuweisungsoperator überhaupt machen soll, ist mir ein Rätsel. Momentan setzt er alles auf Null, was wohl das ist, worüber du dich hier beklagst. Aber was erwartest du denn sonst als Ergebnis, wenn du eine Schleife über alle Werte machst und jedes Mal den Wert 0 zuweist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182784</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:24:50 GMT]]></title><description><![CDATA[<p>Also dein 1/0 soll quasi dumpen, damit Du siehst, dass dort etwas schief läuft? Ich empfehle dafür Exceptions oder assert. Google danach hilft.</p>
<p>Weiters denke ich, Du erstellst eine Instanz der Klasse und füllst diese mit dem Wert 128, was Deine Verwunderung zeigt? Code von main wäre hier hilfreich.</p>
<p>Ansonsten fällt mir auf, dass du delete statt delete[] in deinem dtor nutzt, was natürlich nicht gut bei einem new[] statt new kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182785</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:24:50 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:32:15 GMT]]></title><description><![CDATA[<p>Der gcc Compiler warnt zwar, kompiliert aber eine Division durch 0. Sobald diese im Programm aufgerufen wird, führt sie zum Absturz. Ist für mich die schnellste Methode irgendwo im Programm festzustellen was los ist. So wie der Quelltext da steht, produziert er keinen Fehler, deshalb hat das erste Byte meines Heaps an diesen Stellen die abgefragten Werte.</p>
<p>ByteValue ist beim ersten Durchlauf nicht 0 sondern 128, dass hab ich reinkommentiert.</p>
<p>Wenn ihrs ganz komplett haben wollt. Ist aber nur die Wertzuweisung für ByteValue.</p>
<p><strong>Die double, mit welcher das Objekt gleichgesetzt wird, hat bei meinem Test den Wert 0.5</strong></p>
<pre><code class="language-cpp">LO512&amp; LO512::operator=(const double&amp; src)
{
	//Veränderbare Kopie der const double machen
	double Value = src;
	unsigned char ByteValue = 0;
	//Alle Bytes durchlaufen
	for(int i = 0; i &lt; 64; i++)
	{
		//Bytewert für neuen Byte reseten
		ByteValue = 0;

		//Zahl mit zwei multiplizieren, wenn über 1, erstes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 128;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, zweites Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 64;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, drittes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 32;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, viertes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 16;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, fünftes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 8;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, sechstes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 4;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, siebtes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 2;
			Value -= 1;
			if(Value == 0)
				break;
		}

		//Zahl mit zwei multiplizieren, wenn über 1, achtes Bit = 1 und Zahl -1 für nächste Rechnung
		Value *= 2;
		if(Value &gt;= 1)
		{
			ByteValue = ByteValue | 1;
			Value -= 1;
			if(Value == 0)
				break;
		}

		FirstByte[i] = ByteValue;

		//Hier ist das erste Byte des Heaps 128, es erfolgt kein Fehler
		if(*FirstByte != 128)
			int a = 1/0;
	}

	//Hier tritt auch kein Fehler auf, also sind alle Byte des Heaps 0
	for(int i = 0; i &lt; 64; i++)
	{
		if(FirstByte[i] != 0)
			int a = 1/0;
	}

	return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2182787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182787</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:32:15 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:49:32 GMT]]></title><description><![CDATA[<p>Little Programmer schrieb:</p>
<blockquote>
<p>Der gcc Compiler warnt zwar, kompiliert aber eine Division durch 0. Sobald diese im Programm aufgerufen wird, führt sie zum Absturz. Ist für mich die schnellste Methode irgendwo im Programm festzustellen was los ist. So wie der Quelltext da steht, produziert er keinen Fehler, deshalb hat das erste Byte meines Heaps an diesen Stellen die abgefragten Werte.</p>
</blockquote>
<p>Das steht <em>wo</em> in der Dokumentation von GCC?<br />
Da steht wohl eher, dass Anweisungen, die undefiniertes Verhalten erzeugen, weggelassen werden können. Die Zuweisung mit der Division wird weggelassen, weil C++ offenlässt, wie solche Fehler behandelt werden. Also behandelt der Compiler den Fehler einfach gar nicht.<br />
Dass das manchmal funktioniert kann sein, aber bei Division durch Null ist kein bestimmtes Verhalten vorgeschrieben. Bei der Optimierung kann die Division wegfallen oder auch nicht.<br />
Einfache Lösung:<a href="http://www.cplusplus.com/reference/clibrary/cassert/assert/" rel="nofollow"> <code>assert(FirstByte[i] == 0);</code> </a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182790</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:49:32 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:48:53 GMT]]></title><description><![CDATA[<p>Das steht nirgends, das kann man einfach ausprobieren. Hat mich noch nie im Stich gelassen.</p>
<p>Hab den Fehler gerade selbst gefunden. Schon ein wenig peinlich^^. Um Rechenzeit zu sparen hatte ich bei jeder Zuweisung von ByteValue die Abbruchbedingung:</p>
<pre><code class="language-cpp">if(Value == 0)
                break;
</code></pre>
<p>Damit habe ich, nachdem das erste Byte beschrieben wurde auch die Zuweisung:</p>
<pre><code class="language-cpp">FirstByte[i] = ByteValue;
</code></pre>
<p>Am Ende der Schleife übersprungen. Meine Testabfrage in der Schleife wurde ebenfalls nie aufgerufen und konnte deshalb keinen Fehler produzieren.<br />
Hab die Abbruchbedingung nun ganz ans Ende der Schleife gesetzt und mein Heap erhält nun auch den Wert.</p>
<p>Danke fürs anschauen an alle <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="🙂"
    /> und danke <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22559">@Eisflamme</a> für den Hinweis mit dem delete[] <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182793</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 20:53:47 GMT]]></title><description><![CDATA[<p>Little Programmer schrieb:</p>
<blockquote>
<p>Danke fürs anschauen an alle <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="🙂"
    /> und danke <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22559">@Eisflamme</a> für den Hinweis mit dem delete[] <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Nimm einfach <code>std::vector</code> . Der <em>ist das</em> dynamische Array in C++.<br />
Wer mir nur einen Vorteil von <code>new[]</code> nennen kann, bekommt einen Keks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182798</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 18 Feb 2012 20:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 21:01:43 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Little Programmer schrieb:</p>
<blockquote>
<p>Danke fürs anschauen an alle <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="🙂"
    /> und danke <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22559">@Eisflamme</a> für den Hinweis mit dem delete[] <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Nimm einfach <code>std::vector</code> . Der <em>ist das</em> dynamische Array in C++.<br />
Wer mir nur einen Vorteil von <code>new[]</code> nennen kann, bekommt einen Keks.</p>
</blockquote>
<p>Performance. Wenn du anständig programmierst, ist der direkte Zugriff auf Speicher immer noch schneller als über <code>std:vector</code> . Das ist übrigens der selbe Scheiß wie mit Listen, die will keiner gebrauchen - aber an einer Stelle habe ich durch die Wahl einer Liste das 30-fache an Performance rausgehauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Ich will meinen Keks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182799</guid><dc:creator><![CDATA[Der aus dem Westen ..]]></dc:creator><pubDate>Sat, 18 Feb 2012 21:01:43 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 21:10:58 GMT]]></title><description><![CDATA[<p>Der aus dem Westen .. schrieb:</p>
<blockquote>
<p>Performance. Wenn du anständig programmierst, ist der direkte Zugriff auf Speicher immer noch schneller als über <code>std:vector</code> .</p>
</blockquote>
<p>Nur wenn man nicht daran denkt, Laufzeitchecks abzuschalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182800</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 18 Feb 2012 21:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 21:15:56 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Der aus dem Westen .. schrieb:</p>
<blockquote>
<p>Performance. Wenn du anständig programmierst, ist der direkte Zugriff auf Speicher immer noch schneller als über <code>std:vector</code> .</p>
</blockquote>
<p>Nur wenn man nicht daran denkt, Laufzeitchecks abzuschalten.</p>
</blockquote>
<p>Stimmt schon. Ich wusste früher ja auch nicht, wofür die Projekt- und Linkeroptionen der Compiler gut waren. <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>Wenn man noch kein wirklicher Profi ist, sollte man schon bei <code>std::vector</code> bleiben, der ist wirklich recht einfach zu verwenden, universell einsetzbar und durch unzählige Produktivtests von Fehlern und Bufferüberläufen befreit. Nur, wenn es darauf ankommt, sollte man wirklich zu <code>new[]</code> greifen - meine Meinung. <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/2182802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182802</guid><dc:creator><![CDATA[Der aus dem Westen ..]]></dc:creator><pubDate>Sat, 18 Feb 2012 21:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 21:22:56 GMT]]></title><description><![CDATA[<p>Der aus dem Westen .. schrieb:</p>
<blockquote>
<p>Wenn man noch kein wirklicher Profi ist, sollte man schon bei <code>std::vector</code> bleiben, der ist wirklich recht einfach zu verwenden, universell einsetzbar und durch unzählige Produktivtests von Fehlern und Bufferüberläufen befreit. Nur, wenn es darauf ankommt, sollte man wirklich zu <code>new[]</code> greifen - meine Meinung. <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>Nochmal: wieso? Das Performanceargument wurde dir schon widerlegt und du kannst das auch gerne nachmessen. Wenn du was anderes rausbekommst als Gleichheit, dann gehörst du zu den nicht-wirklichen Profis und solltest sowieso die Finger von so etwas lassen.</p>
<p>Ein std::vector (mit dem Standardallocator) <strong>ist</strong> new[] mit dem ganzen RAII-Gemurksel drumrum, welches man sowieso programmieren müsste (und welches auch nichts kostet). Und einem guten Interface 9welches auch nichts kostet). Und mit optionalen Debugfeatures (kosten auch nichts, wenn nicht benutzt). new[] ist daher <strong>immer</strong> in <strong>allen</strong> Belangen schlechter als vector.</p>
<p>Dir sollte man für die Antwort schon eher einen Antikeks geben, weil es genau das unreflektierte Wiederholen solcher Legenden ist, die Anfänger zu new[] treibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182804</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 18 Feb 2012 21:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 21:48:12 GMT]]></title><description><![CDATA[<p>Der std::vector speichert ganze drei Pointer ab (begin, end, endofstorage) und unnötigerweise noch einen Allokator.</p>
<p>Und auch wenn man am Anfang reserve() macht und mit höchsten Compileroptimierungen übersetzt; push_back bleibt immer ein ungeinlineter Funktionsaufruf, der ein inkrementieren des end-Pointers mit sich bringt. Der muss von meinem Code auch noch gespeichert werden (ich muss eine for-loop über int machen anstatt T*). Höchst ineffizient. Wenn ich resize() nehme, werden POD-Konstruktoren aufgerufen.</p>
<p>std::vector&lt;&gt; ist unvertretbar schlecht für sehr viele kleine Arrays mit konstanter Grösse und nachteilig für grössere push_back-Geschichten. Dein &quot;kostet nichts&quot; ist übertrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182806</guid><dc:creator><![CDATA[keksfresser]]></dc:creator><pubDate>Sat, 18 Feb 2012 21:48:12 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 21:56:14 GMT]]></title><description><![CDATA[<p>keksfresser schrieb:</p>
<blockquote>
<p>Der std::vector speichert ganze drei Pointer ab (begin, end, endofstorage) und unnötigerweise noch einen Allokator.</p>
</blockquote>
<p>Du willst über Optimierung diskutieren und kennst nicht einmal Empty Base Optimization?</p>
<blockquote>
<p>Und auch wenn man am Anfang reserve() macht und mit höchsten Compileroptimierungen übersetzt; push_back bleibt immer ein ungeinlineter Funktionsaufruf, der ein inkrementieren des end-Pointers mit sich bringt.</p>
</blockquote>
<p>Wieso ungeinlined? Wieso wäre das bei einem selbstverwalteten Array anders? Da musst du auch wissen, wo das Ende ist.</p>
<blockquote>
<p>std::vector&lt;&gt; ist unvertretbar schlecht für sehr viele kleine Arrays mit konstanter Grösse und nachteilig für grössere push_back-Geschichten. Dein &quot;kostet nichts&quot; ist übertrieben.</p>
</blockquote>
<p>Warum solte man vector fur Arrays konstanter Größe nehmen? Da würdest du ja auch kein new[] nehmen. Deine Aussagen sind solche Blödsinn, dass ich bei einem Unregisitrierten annehmen muss, dass du nur trollen möchtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182807</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 18 Feb 2012 21:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:08:11 GMT]]></title><description><![CDATA[<p>keksfresser schrieb:</p>
<blockquote>
<p>Der std::vector speichert ganze drei Pointer ab (begin, end, endofstorage) und unnötigerweise noch einen Allokator.</p>
</blockquote>
<p>Der Allocator kann von einem schlauen Compiler weggelassen werden.<br />
Das doppelte Ende ist eine Optimierung für <code>push_back</code> , der eine Zeiger ist aber verschmerzbar, wenn man ihn nicht braucht. Macht in der Praxis einfach keinen Unterschied ob der nun da ist oder nicht. Das wäre eine Mikrooptimierung, die in der Messungenauigkeit untergeht.</p>
<p>Ich muss aber zugeben, dass <code>vector</code> damit nicht ganz dem C++ Prinzip entspricht, dass man nur das bezahlt, was man auch benutzt. Übersehe ich etwas oder fehlt da wirklich ein Container für ein dynamisches Array garantiert ohne <code>push_back</code> -Optimierung?<br />
Ein Kompromiss ist <code>unique_ptr&lt;T []&gt;</code> : Kein Komfort, aber wenigstens kein Leak.</p>
<p>keksfresser schrieb:</p>
<blockquote>
<p>Und auch wenn man am Anfang reserve() macht und mit höchsten Compileroptimierungen übersetzt; push_back bleibt immer ein ungeinlineter Funktionsaufruf, der ein inkrementieren des end-Pointers mit sich bringt. Der muss von meinem Code auch noch gespeichert werden (ich muss eine for-loop über int machen anstatt T*). Höchst ineffizient. Wenn ich resize() nehme, werden POD-Konstruktoren aufgerufen.</p>
</blockquote>
<p>Was hat <code>push_back</code> jetzt damit zu tun?<br />
Das mit der Schleife ergibt keinen Sinn.<br />
<code>new[]</code> ruft doch auch den Standardkonstruktor auf? <code>push_back</code> ruft hingegen gar keinen Standardkonstruktor auf.</p>
<p>keksfresser schrieb:</p>
<blockquote>
<p>std::vector&lt;&gt; ist unvertretbar schlecht für sehr viele kleine Arrays mit konstanter Grösse und nachteilig für grössere push_back-Geschichten.</p>
</blockquote>
<p>Konstante Größe? Joa, da nimmt man <code>array</code> .<br />
Das tolle an <code>vector</code> ist ja gerade, dass er perfekt für &quot; <code>push_back</code> -Geschichten&quot; ist. Du hast einfach nur keine Ahnung.</p>
<p>keksfresser schrieb:</p>
<blockquote>
<p>Dein &quot;kostet nichts&quot; ist übertrieben.</p>
</blockquote>
<p>Dein &quot;kostet was&quot; ist nicht nur übertrieben, sondern aus der Luft gegriffen.</p>
<p>Falls der Beitrag als Scherz gemeint war, bitte nächstes Mal irgendeinen Hinweis auf Ironie hinterlassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182809</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:15:45 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>keksfresser schrieb:</p>
<blockquote>
<p>Der std::vector speichert ganze drei Pointer ab (begin, end, endofstorage) und unnötigerweise noch einen Allokator.</p>
</blockquote>
<p>Du willst über Optimierung diskutieren und kennst nicht einmal Empty Base Optimization?</p>
</blockquote>
<p>Gut, lass den Allokator weg. Es bleibt der Overhead von einem Pointer.</p>
<blockquote>
<p>Wieso wäre das bei einem selbstverwalteten Array anders? Da musst du auch wissen, wo das Ende ist.</p>
</blockquote>
<p>Irgendwie muss ich dem Vektor sagen, wie gross er sein soll. vec.resize(n). Dann speichere ich n *und* das Ende ab; Nochmals overhead von einem Pointer.</p>
<blockquote>
<p>Deine Aussagen sind solche Blödsinn, dass ich bei einem Unregisitrierten annehmen muss, dass du nur trollen möchtest.</p>
</blockquote>
<p>Deine Sprech ist solche Fehler, dass ich bei einem Modirerator annehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182811</guid><dc:creator><![CDATA[keksfresser]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:15:45 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:18:42 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Ich muss aber zugeben, dass <code>vector</code> damit nicht ganz dem C++ Prinzip entspricht, dass man nur das bezahlt, was man auch benutzt. Übersehe ich etwas oder fehlt da wirklich ein Container für ein dynamisches Array garantiert ohne <code>push_back</code> -Optimierung?<br />
Ein Kompromiss ist <code>unique_ptr&lt;T []&gt;</code> : Kein Komfort, aber wenigstens kein Leak.</p>
</blockquote>
<p>Jupp, Punkt für new.</p>
<blockquote>
<p><code>new[]</code> ruft doch auch den Standardkonstruktor auf?</p>
</blockquote>
<p>Nein, tuts nicht. <code>new[]</code>  <code>()</code> macht das.</p>
<p>keksfresser schrieb:</p>
<blockquote>
<p>Falls der Beitrag als Scherz gemeint war, bitte nächstes Mal irgendeinen Hinweis auf Ironie hinterlassen.</p>
</blockquote>
<p>Ne, der Grund war zu tollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182812</guid><dc:creator><![CDATA[keksfresser]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:19:07 GMT]]></title><description><![CDATA[<p>Vielleicht sollte man erst einmal sagen, wann man vector besser nicht (bzw nicht direkt) verwenden sollte. Wenn ich ein Array fester Größe brauche, diese aber erst zur Laufzeit feststeht, ist vector, sagen wir mal, suboptimal, durch die zusätzlichen Verwaltungsdaten. Bei einer Dimension ist das ganze nicht wirklich schlimm, aber spätestens bei 3 Dimensionen fallen die Verwaltungsdaten besonders bei kleinen Arrays ins Gewicht. Auch sind 3 geschachtelte Vektoren nicht gerade Cache-freundlich und somit langsam.</p>
<p>Bei mehr als 1 Dimension würde ich den vector in eine Klasse stecken, die mir die Elemente auf ein 1-dimensionales Array mappt, bzw wenn die Größe zur Laufzeit konstant bleibt, würde ich unique_ptr&lt;T[]&gt; wrappen, um noch ein paar Bytes rauszuholen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182813</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:19:07 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:45:31 GMT]]></title><description><![CDATA[<p>keksfresser schrieb:</p>
<blockquote>
<blockquote>
<p><code>new[]</code> ruft doch auch den Standardkonstruktor auf?</p>
</blockquote>
<p>Nein, tuts nicht. <code>new[]</code>  <code>()</code> macht das.</p>
</blockquote>
<p>Mein Compiler tut das und selbst wenn er es nicht täte, wäre das ein Argument gegen <code>new[]</code> . Was will man denn mit einer Folge nicht initialisierter Objekte?</p>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Vielleicht sollte man erst einmal sagen, wann man vector besser nicht (bzw nicht direkt) verwenden sollte. Wenn ich ein Array fester Größe brauche, diese aber erst zur Laufzeit feststeht, ist vector, sagen wir mal, suboptimal, durch die zusätzlichen Verwaltungsdaten.</p>
</blockquote>
<p>Hallo? Es geht hier um einen Zeiger pro <code>vector</code> -Instanz. Schreib für deine Bedürfnisse einen Container, der mit zwei Zeigern auskommt, aber vergiss den <code>unique_ptr</code> -Hack.</p>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Bei einer Dimension ist das ganze nicht wirklich schlimm, aber spätestens bei 3 Dimensionen fallen die Verwaltungsdaten besonders bei kleinen Arrays ins Gewicht. Auch sind 3 geschachtelte Vektoren nicht gerade Cache-freundlich und somit langsam.</p>
</blockquote>
<p>Niemand, der bei Trost ist, würde das so implementieren.</p>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Bei mehr als 1 Dimension würde ich den vector in eine Klasse stecken, die mir die Elemente auf ein 1-dimensionales Array mappt, bzw wenn die Größe zur Laufzeit konstant bleibt, würde ich unique_ptr&lt;T[]&gt; wrappen, um noch ein paar Bytes rauszuholen.</p>
</blockquote>
<p>Spart immer noch einen Zeiger. In anderen Worten: Acht Bytes. Eine enorme Ersparnis bei einer typischerweise tausende Bytes großen Matrix, nicht? Also um Speicher an sich geht es hier nicht.<br />
Der einzige Fall, in dem der kleinere <code>vector</code> messbar schneller sein kann:<br />
Iteration über eine lange Folge von <code>vector</code> en ohne die Elemente der <code>vector</code> en anzufassen. Der unnötige Zeiger braucht Platz im Cache und erfordert damit häufigeres Nachladen.</p>
<p>Wie gesagt: Es gibt noch keine optimale Lösung für das Problem. <code>vector</code> ist der sehr gute Kompromiss, wenn man man ihn nicht mit zwei Zeigern nachbauen möchte oder kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182815</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:53:01 GMT]]></title><description><![CDATA[<p>Wieso wird hier über die Performance von std::vector schlecht geredet? Soetwas besitzt ein new[] Array gar nicht. Von daher steht das nicht zur Debatte.<br />
Der einzige Unterschied ist ein zusätzlicher Pointer auf Seiten des Vektors, nämlich ganze 4/8 Byte auf gängen Maschienen. Das ist extrem vernachlässigbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182817</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:55:51 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22298">@TyRoXx</a>: Pi hat schon recht (das ich das mal sagen wurde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ). vector wäre da deutlich langsamer und deutlich verschwenderischer als statische Arrays. vector ist kein Kompromiss. vector ist wie new[]. Meistens will man auch dynamische Arrays. Aber wenn man sie nicht braucht, dann nimmt man weder vector noch new.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182819</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:57:42 GMT]]></title><description><![CDATA[<p>Ich habe mir schon überlegt, ob ich von meiner Seite aus einen Flamewar starten soll, um dem Moderator zu sagen, dass er von seinem Elfenbeinturm steigen soll. Und nun sehe ich, dass ihr dies bereits hervorragenderweise alleine gelöst habt. Eventuell sollte ich wieder anfangen, den Leuten zu vertrauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p><code>std::vector</code> erzeugt einen Overhead, welcher bei einigen Anwendungsgebieten vermeidbar ist, wenn man stattdessen Arrays benutzt. Jeder, der etwas anderes behauptet, gehört nicht an den Computer, sondern ins Hausmeisterkabuff. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2182820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182820</guid><dc:creator><![CDATA[Der aus dem Westen ..]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 22:57:47 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<p>Wieso wird hier über die Performance von std::vector schlecht geredet? Soetwas besitzt ein new[] Array gar nicht.</p>
</blockquote>
<p>Doch. Ein new int[1000] ist schneller als ein vector&lt;int&gt;(1000), eben weil ein int ein POD ist und PODs durch new nicht mit 0 initialisiert werden.</p>
<p>Ethon schrieb:</p>
<blockquote>
<p>Der einzige Unterschied ist ein zusätzlicher Pointer auf Seiten des Vektors</p>
</blockquote>
<p>Zwei zusätzliche Pointer, weil du die Grösse meist noch woanders gespeichert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182821</guid><dc:creator><![CDATA[keksfresser]]></dc:creator><pubDate>Sat, 18 Feb 2012 22:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 23:01:24 GMT]]></title><description><![CDATA[<p>keksfresser schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<p>Der einzige Unterschied ist ein zusätzlicher Pointer auf Seiten des Vektors</p>
</blockquote>
<p>Zwei zusätzliche Pointer, weil du die Grösse meist noch woanders gespeichert hast.</p>
</blockquote>
<p>Ein zusätzlicher Pointer, weil du bei vector die Größe nicht speichern musst. Dafür aber echter und deutlicher Performanceverlust, falls du nach und nach Elemente zu deinem new-Array hinzufügen musst. Also im wohl allerhäufigsten Anwendungsszenario, denn selten weiß man im Voraus, wieviel kommen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182822</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 18 Feb 2012 23:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Heap verliert scheinbar grundlos seinen Inhalt on Sat, 18 Feb 2012 23:02:55 GMT]]></title><description><![CDATA[<p>keksfresser schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<p>Wieso wird hier über die Performance von std::vector schlecht geredet? Soetwas besitzt ein new[] Array gar nicht.</p>
</blockquote>
<p>Doch. Ein new int[1000] ist schneller als ein vector&lt;int&gt;(1000), eben weil ein int ein POD ist und PODs durch new nicht mit 0 initialisiert werden.</p>
</blockquote>
<p>Upps, erstens seh ich dass ich da etwas übersehen habe, ich hab mich bei der Aussage auf push_back bezogen. Soetwas hat ein new[] array nicht.</p>
<p>Stimmt. Das sind aber auch nur einmalige Kosten.</p>
<p>keksfresser schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<p>Der einzige Unterschied ist ein zusätzlicher Pointer auf Seiten des Vektors</p>
</blockquote>
<p>Zwei zusätzliche Pointer, weil du die Grösse meist noch woanders gespeichert hast.</p>
</blockquote>
<p>Bei new[] müsste ich mir die Größe auch irgendwo merken. Oder wenn sie sowieso bekannt ist: std::array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2182824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2182824</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 18 Feb 2012 23:02:55 GMT</pubDate></item></channel></rss>