<?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[Empfehlt mir einen Container]]></title><description><![CDATA[<p>Hi.</p>
<p>Anforderung:<br />
- Sehr häufiges iterieren von begin() bis end()<br />
- Enthält Zeiger auf Klassen die kontrolliert zu bestimmen Zeiten gelöscht werden müssen<br />
- sofortiges löschen von elementen an beliebiger stelle<br />
- performant</p>
<p>Man sagt, std::list sei die inperformante Wahl der Container wenns um Spiele geht.<br />
Welchen würden unsere Forenexperten empfehlen?</p>
<p>Verwendung:<br />
In diesen Containern werden in einem Spiel gespawnte Gegner gespeichert.<br />
Diese werden 1x pro Frame durchlaufen und die update Funktion aufgerufen, sowie Kollisionstest durchgeführt und auch wieder entfernt. Um eben ein erneutes iterieren zu sparen wird der Gegner sofort entfernt.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">void GameStateGame::onUpdate( const u32 delta, const u32 time )
{
	m_shoot_timer += delta;
	m_spawn_timer += delta;
	m_player_shoot_timer += delta;
	if ( m_spawn_timer &gt;= m_spawn_rate )
	{
		int interval = GameManager::getInstance().getRandomNumber(m_shoot_rate - 200, m_shoot_rate);
		EnemyShip* e = new EnemyShip(new SimpleLaser(), interval);
		m_enemies.push_back(e);
		m_spawn_timer = 0;
	}
	TEnemyList::iterator it_e = m_enemies.begin();
	for ( it_e; it_e != m_enemies.end(); it_e++ )
	{
		EnemyShip* e = *it_e;

		if ( e-&gt;getPosition().x &lt;= -200 )
		{
			e-&gt;sleep();
			if ( e-&gt;canBeDeleted() )
			{
				it_e = m_enemies.erase(it_e);				
				delete e;
				if ( it_e == m_enemies.end() ) break;
			}
		}
		else
		{
			e-&gt;update(delta, time);
		}
	}
	m_player-&gt;update(delta, time);
}
</code></pre>
<p>Das ist jetzt so eine funktion aus meiner GameStateKlasse.<br />
Danke für eventuelle Tipps, bin mir gerade unsicher welchen Container ich nehmen soll.</p>
<p>p.s.: Ich weiss dass const hier nicht nötig ist für ein unsigned int. Ich mache das alleine zur Fehlervermeidung wie if ( delta = 0 ). Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281877/empfehlt-mir-einen-container</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 10:34:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281877.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Feb 2011 17:15:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 17:16:46 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Anforderung:<br />
- Sehr häufiges iterieren von begin() bis end()<br />
- Enthält Zeiger auf Klassen die kontrolliert zu bestimmen Zeiten gelöscht werden müssen<br />
- sofortiges löschen von elementen an beliebiger stelle<br />
- performant</p>
<p>Man sagt, std::list sei die inperformante Wahl der Container wenns um Spiele geht.<br />
Welchen würden unsere Forenexperten empfehlen?</p>
<p>Verwendung:<br />
In diesen Containern werden in einem Spiel gespawnte Gegner gespeichert.<br />
Diese werden 1x pro Frame durchlaufen und die update Funktion aufgerufen, sowie Kollisionstest durchgeführt und auch wieder entfernt. Um eben ein erneutes iterieren zu sparen wird der Gegner sofort entfernt.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">void GameStateGame::onUpdate( const u32 delta, const u32 time )
{
	m_shoot_timer += delta;
	m_spawn_timer += delta;
	m_player_shoot_timer += delta;
	if ( m_spawn_timer &gt;= m_spawn_rate )
	{
		int interval = GameManager::getInstance().getRandomNumber(m_shoot_rate - 200, m_shoot_rate);
		EnemyShip* e = new EnemyShip(new SimpleLaser(), interval);
		m_enemies.push_back(e);
		m_spawn_timer = 0;
	}
	TEnemyList::iterator it_e = m_enemies.begin();
	for ( it_e; it_e != m_enemies.end(); it_e++ )
	{
		EnemyShip* e = *it_e;

		if ( e-&gt;getPosition().x &lt;= -200 )
		{
			e-&gt;sleep();
			if ( e-&gt;canBeDeleted() )
			{
				it_e = m_enemies.erase(it_e);				
				delete e;
				if ( it_e == m_enemies.end() ) break;
			}
		}
		else
		{
			e-&gt;update(delta, time);
		}
	}
	m_player-&gt;update(delta, time);
}
</code></pre>
<p>Das ist jetzt so eine funktion aus meiner GameStateKlasse.<br />
Danke für eventuelle Tipps, bin mir gerade unsicher welchen Container ich nehmen soll.</p>
<p>p.s.: Ich weiss dass const hier nicht nötig ist für ein unsigned int. Ich mache das alleine zur Fehlervermeidung wie if ( delta = 0 ). Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018805</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 09 Feb 2011 17:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 17:17:00 GMT]]></title><description><![CDATA[<p>Ist die Reihenfolge der Elemente wichtig? Falls nein: vector. Das Löschen aus der Mitte implementierst du dann über Vertauschung mit dem Endelement und anschließender Verkürzung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018806</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 09 Feb 2011 17:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 17:27:02 GMT]]></title><description><![CDATA[<p>Könnte mit SeppJs Methode eine std::deque nicht sogar besser sein (besonders was das Löschen angeht)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018807</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Wed, 09 Feb 2011 17:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 17:48:10 GMT]]></title><description><![CDATA[<p>Die Reihenfolge wäre in dem Fall nicht wichtig.<br />
Wie schaut deque vs vector aus was Jodocus ansprach?<br />
Das mit nach hinten schieben wird schwierig weil pro Durchlauf auch mehrere Elemente ungültig werden können. Klar, der reihe nach aber wie gut eignet sich da swap?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018823</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 09 Feb 2011 17:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 17:56:02 GMT]]></title><description><![CDATA[<p>Jodocus schrieb:</p>
<blockquote>
<p>Könnte mit SeppJs Methode eine std::deque nicht sogar besser sein (besonders was das Löschen angeht)?</p>
</blockquote>
<p>deque würde ich nicht nehmen, wenn es auf Geschwindigkeit ankommt. Für deque spricht nur, dass Einfügen und Löschen am Anfang eine bessere Komplexitätsklasse hat als beim vector. Aber sonst sind die Konstanten viel größer als bei vector, außer eventuell beim Anhängen am Ende, was ähnlich schnell geht. Aber dafür wird der Elementzugriff lahm, was oftmals nicht gewünscht wird.</p>
<p>Das relativiert sich natürlich, falls es die Operationen auf den Elementen sind, die die Zeit verbrauchen, aber das wird hier wohl nicht der Fall sein, sonst würde ja nicht ausdrücklich nach einem schnellen Container gefragt. Und da ist vector allen anderen Containern deutlich überlegen.</p>
<p>(Das ist natürlich alles nicht Standard, da der Standard nur Komplexitätsklassen vorschreibt. Die Schnelligkeit von vector ergibt sich dann aber in der Praxis aus der einfacheren Implementierung von vector, der einfach nicht so viele Anforderungen erfüllen braucht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018827</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 09 Feb 2011 17:56:02 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 18:00:19 GMT]]></title><description><![CDATA[<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Die Reihenfolge wäre in dem Fall nicht wichtig.<br />
Wie schaut deque vs vector aus was Jodocus ansprach?<br />
Das mit nach hinten schieben wird schwierig weil pro Durchlauf auch mehrere Elemente ungültig werden können. Klar, der reihe nach aber wie gut eignet sich da swap?</p>
</blockquote>
<p>Nimm das mit dem Verschieben nicht so wörtlich. Das ist eher so gemeint:</p>
<pre><code>loesche element N aus liste. Dazu:
 1. liste[N]=letztes element aus liste
 2. letztes element loeschen
</code></pre>
<p>Also einfach Zuweisung und resize(size-1). Eine ganz ganz billige Operation. Danach geh'ste bei Element N weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018829</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 09 Feb 2011 18:00:19 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 18:26:55 GMT]]></title><description><![CDATA[<p>Also ich würde da schon swap() empfehlen, da swap() oft schneller ist als operator =.</p>
<p>Wenn es um Zeiger geht sollte das natürlich egal sein. Es sei denn es wären Smart-Pointer, dann ist swap() wieder der klare Sieger.<br />
Mit std::unique_ptr geht nur swap(), und mit std::shared_ptr wird swap() ein gutes Stück schneller sein als operator =.</p>
<p>Und: ganz klar vector wenn einfügen/löschen am Anfang nicht benötigt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018854</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 09 Feb 2011 18:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 18:34:22 GMT]]></title><description><![CDATA[<p>Eine deque ist ja typischerweise als Array von Arrays implementiert.<br />
Das Iterieren dürfte auch nur auf ein ++offset hinauslaufen.<br />
Was eindeutig länger braucht ist das Dereferenzieren eines Iterators weil ungefähr folgendes passiert:</p>
<pre><code class="language-cpp">#define deque_size 16; //power of 2
T map[x][deque_size];
size_t offset;
//...
T operator*()
{
 size_type block = offset / deque_size;     //könnte vom Compiler zu nem shift optimiert werden
 size_type off = offset &amp; (deque_size - 1); //entspricht modulo

 return map[ block ][ off ];
}
</code></pre>
<p>Also doch ein paar Befehle mehr als bei einem vector.</p>
<p>Im Endeffekt läufts auf folgendes hinaus:<br />
Hinzufügen eines Elements wenn noch Speicher im Container frei ist:<br />
vector: O(1)<br />
deqeue: O(1)<br />
Hinzufügen eines Elements in einen vollen Container:<br />
vector: Kopieren aller Elemente in neuen Speicherbereich: O(n)<br />
deque: Kopieren aller Map-Elemente in neuen Speicherbereich: O(m) (m = n / deque_size)<br />
Wenn die Anzahl deiner Elemente relativ konstant ist fällt das aber nicht wirklich ins Gewicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018859</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Wed, 09 Feb 2011 18:34:22 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 19:15:15 GMT]]></title><description><![CDATA[<p>Wie wärs mit dem Container?<br />
<a href="http://de.academic.ru/dic.nsf/dewiki/1359077" rel="nofollow">http://de.academic.ru/dic.nsf/dewiki/1359077</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018874</guid><dc:creator><![CDATA[achsek]]></dc:creator><pubDate>Wed, 09 Feb 2011 19:15:15 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 19:25:36 GMT]]></title><description><![CDATA[<p>achsek schrieb:</p>
<blockquote>
<p>Wie wärs mit dem Container?<br />
<a href="http://de.academic.ru/dic.nsf/dewiki/1359077" rel="nofollow">http://de.academic.ru/dic.nsf/dewiki/1359077</a></p>
</blockquote>
<p>Hmm, gefüllt mit Festplatten eine extrem gute Datenrate, selbst bei Lieferung ans andere Ende der Welt. Aber die Latenz lässt zu wünschen übrig und das ist bei Spielen wichtiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018881</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 09 Feb 2011 19:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 20:06:00 GMT]]></title><description><![CDATA[<p>achsek schrieb:</p>
<blockquote>
<p>Wie wärs mit dem Container?<br />
<a href="http://de.academic.ru/dic.nsf/dewiki/1359077" rel="nofollow">http://de.academic.ru/dic.nsf/dewiki/1359077</a></p>
</blockquote>
<p>Beim dem Funktionsumfang dauert die Allokierung zu lange :p.<br />
Danke an alle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018893</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 09 Feb 2011 20:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Wed, 09 Feb 2011 20:19:28 GMT]]></title><description><![CDATA[<p>Vielleicht noch das hier als Alternative: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html" rel="nofollow">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018902</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 09 Feb 2011 20:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Thu, 10 Feb 2011 10:56:09 GMT]]></title><description><![CDATA[<p>Also die Abschätzung, ob deque oder vector die bessere Wahr ist, wird<br />
wohl nur schwer einer machen können ohne das komplette Problem genau zu kennen...</p>
<p>Vereinfacht:<br />
deque: konstant langsamere Zugriffszeit per Index - bei Verwendung von Iterator (denke ich) wenig spürbar<br />
vector: komplettes Umkopieren, falls Speicher nicht ausreichend (kann insbesondere bei großen Vektoren zu ruckeln führen)</p>
<p>Aber mach dir keinen so großen Kopf drum.<br />
Definier dir doch einfach ein typedef und probier es aus.<br />
Wenn es nicht paßt, dann ändere den Typen.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019074</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 10 Feb 2011 10:56:09 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Thu, 10 Feb 2011 20:03:32 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>deque: konstant langsamere Zugriffszeit per Index - bei Verwendung von Iterator (denke ich) wenig spürbar</p>
</blockquote>
<p>Da denkst du falsch, auch Iterator-Operationen werden langsamer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019338</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 10 Feb 2011 20:03:32 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Thu, 10 Feb 2011 21:50:05 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>deque: konstant langsamere Zugriffszeit per Index - bei Verwendung von Iterator (denke ich) wenig spürbar</p>
</blockquote>
<p>Da denkst du falsch, auch Iterator-Operationen werden langsamer.</p>
</blockquote>
<p>Außerdem ist bei deque imho kein O(1) Index-Zugriff garantiert.</p>
<p>Komplexitätstheoretisch sollte eine <code>deque</code> äquivalent zu einer <code>list</code> sein, sofern die block size konstant ist..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019383</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Thu, 10 Feb 2011 21:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Thu, 10 Feb 2011 22:50:01 GMT]]></title><description><![CDATA[<p>Nachdem eine deque Random-Access Iteratoren hat, müsste der Zugriff amortisiert O(1) sein. Bloss wird er linear langsamer sein als bei vector.</p>
<p>Und deque ist von der Komplexität her sicher nicht mit list vergleichbar, sonst wäre die Klasse wohl ziemlich sinnlos <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/2019401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019401</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 10 Feb 2011 22:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 08:22:02 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Nachdem eine deque Random-Access Iteratoren hat, müsste der Zugriff amortisiert O(1) sein. Bloss wird er linear langsamer sein als bei vector.</p>
</blockquote>
<p>Kannst Du mir die Stelle im Standard nennen? Ich habe gestern nämlich danach gesucht, aber nichts gefunden. Allerdings habe ich auch nichts zu O(1) Zugriff bei <code>vector</code> gefunden Dementsprechend werde ich den entsprechenden Abschnitt wohl irgendwie übersehen haben ;).</p>
<p>Edit: Habs gefunden: 23.1.1 Tabelle 71 in meinem Draft hier:<br />
&quot;Table 71 lists sequence operations that are provided for some types of sequential containers but not others. An implementation shall provide these operations for all container types shown in the “container” column, and shall implement them so as to take amortized constant time.&quot;<br />
Demnach muss <code>deque</code> <strong>amortisiert</strong> O(1) für <code>push_back</code> , <code>push_front</code> und <code>operator[]</code> implementieren.</p>
<p>Also schon anders als eine <code>list</code> . Da hatte ich was falsches im Kopf ;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019459</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Fri, 11 Feb 2011 08:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 21:17:10 GMT]]></title><description><![CDATA[<p>Was haltet ihr hiervon:<br />
<a href="http://www.boost.org/doc/libs/1_36_0/doc/html/intrusive/slist.html" rel="nofollow">http://www.boost.org/doc/libs/1_36_0/doc/html/intrusive/slist.html</a></p>
<p>Und was genau meinen die mit intrusive?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019889</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 11 Feb 2011 21:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 23:06:05 GMT]]></title><description><![CDATA[<p>@Scorcher24:<br />
Intrusive heisst dass du die Elemente anpassen musst, wenn du sie in einen solchen Container einfügen willst.<br />
D.h. du musst z.B. von einer bestimmten Klasse ableiten oder ein Member einer bestimmten Klasse einfügen, um die Objekte in einem intrusive Container verwalten zu können.</p>
<p>Auch werden dabei die Elemente direkt eingefügt und keine Kopien gemacht.</p>
<p><a href="http://www.boost.org/doc/libs/1_36_0/doc/html/intrusive/intrusive_vs_nontrusive.html#intrusive.intrusive_vs_nontrusive.differences_intrusive_vs_nontrusive" rel="nofollow">http://www.boost.org/doc/libs/1_36_0/doc/html/intrusive/intrusive_vs_nontrusive.html#intrusive.intrusive_vs_nontrusive.differences_intrusive_vs_nontrusive</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019905</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Feb 2011 23:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 23:09:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6788">@life</a>:<br />
Es steht auch nochmal bei den Iterator-Categories für die Iteratoren selbst. Alle vom Standard für eine bestimmte Iterator-Category vorgeschriebenen Operationen sind mit amortisiert O(1) vorgeschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019907</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Feb 2011 23:09:05 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 23:11:36 GMT]]></title><description><![CDATA[<p>Danke für den Link, aber das eignet sich doch dann eigentlich die Spieleprogrammeriung mehr als normale Container. Es gibt kein hin- und herkopieren und nur was ich allokiere wird auch benötigt.<br />
Ich denke ich versuchs mal mit boost::slist und schau mir dann die Performance an. Weil die meiste Zeit gehe ich meine Listen sowieso nur in eine Richtung durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019908</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 11 Feb 2011 23:11:36 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 23:17:13 GMT]]></title><description><![CDATA[<p>Die doppelt verkettete intrusive List ist auch nicht viel langsamer.</p>
<p>BTW: willst du Zeiger auf die Objekte in die intrusive list stecken, oder dann die Objekte selbst? Die ganzen intrusive Container funktionieren ja auch mit abgeleiteten Klassen.</p>
<p>Wenn du die Objekte selbst in die intrusive list stecken kannst, dann bringt das vermutlich ein bisschen was.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019911</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Feb 2011 23:17:13 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 23:20:34 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Die doppelt verkettete intrusive List ist auch nicht viel langsamer.</p>
<p>BTW: willst du Zeiger auf die Objekte in die intrusive list stecken, oder dann die Objekte selbst? Die ganzen intrusive Container funktionieren ja auch mit abgeleiteten Klassen.</p>
<p>Wenn du die Objekte selbst in die intrusive list stecken kannst, dann bringt das vermutlich ein bisschen was.</p>
</blockquote>
<p>Hmm, naja ich erzeuge meine Objekte auf dem Heap. Hat den Grund, dass ich genau definieren muss wann diese zerstört werden damit keine Memory Leaks entstehen. Sprich, bevor der OpenGL Context zerstört wird.<br />
Im prinzip steke ich da ja nur nen Zeiger darauf &quot;rein&quot;. Aber bei &quot;C&quot;-Style verketteten Listen biegt man ja auch nur Zeiger hin und her.<br />
Das Problem bei STL-Containern ist halt, dass diese nochmal kopieren.<br />
Ich geb zu, ich habe so meine Probleme mit Containern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019912</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Fri, 11 Feb 2011 23:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to Empfehlt mir einen Container on Fri, 11 Feb 2011 23:41:59 GMT]]></title><description><![CDATA[<p>@Scorcher24:<br />
Wenn du das willst was C-Style Listen machen, dann sind die Boost.Intrusive Listen optimal für dich.</p>
<p>Dann musst du aber wirklich die Objekte selbst in die intrusive List stecken, und nicht eine Hilfsklasse mit nur einem Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019918</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Feb 2011 23:41:59 GMT</pubDate></item></channel></rss>