<?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[STL: list, vector oder was sonst nehmen?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe momentan eine Liste, in der lediglich Daten hinten angehängt, ab und zu mal ein Element von einer beliebigen Position gelöscht und die ganze Liste von vorne nach hinten durchgegangen wird.</p>
<p>Da das sehr oft passiert, ist die Performance der verwendeten Implementierung das wichtigste Kriterium. Also was sollte ich hier am besten nehmen, was ist am schnellsten und effizietesten - list, vector oder ganz was anderes?</p>
<p>Danke!</p>
<p>Smpff!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308580/stl-list-vector-oder-was-sonst-nehmen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 18:05:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308580.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Sep 2012 12:53:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 12:53:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe momentan eine Liste, in der lediglich Daten hinten angehängt, ab und zu mal ein Element von einer beliebigen Position gelöscht und die ganze Liste von vorne nach hinten durchgegangen wird.</p>
<p>Da das sehr oft passiert, ist die Performance der verwendeten Implementierung das wichtigste Kriterium. Also was sollte ich hier am besten nehmen, was ist am schnellsten und effizietesten - list, vector oder ganz was anderes?</p>
<p>Danke!</p>
<p>Smpff!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255518</guid><dc:creator><![CDATA[Smpff]]></dc:creator><pubDate>Sat, 29 Sep 2012 12:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:07:05 GMT]]></title><description><![CDATA[<p>Es kommtd darauf an, welche Anforderungen du an deine Liste stellst. Ist z.B. die Reihenfolge der Elemente wichtig? Schau dir mal das Flowchart an: <a href="http://stackoverflow.com/questions/471432/in-which-scenario-do-i-use-a-particular-stl-container" rel="nofollow">http://stackoverflow.com/questions/471432/in-which-scenario-do-i-use-a-particular-stl-container</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255521</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:10:02 GMT]]></title><description><![CDATA[<p>Wie schon geschrieben gibt es nur diese Anforderungen:</p>
<p>- Elemente hinten anhängen<br />
- beliebige Elemente entfernen<br />
- durch die Liste durchgehen können<br />
- Tempo<br />
- Effizienz<br />
- Tempo<br />
- Effizienz</p>
<p>(habe ich Tempo und Effizienz schon erwähnt?) <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/2255522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255522</guid><dc:creator><![CDATA[Smpff]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:10:02 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:21:47 GMT]]></title><description><![CDATA[<p>Smpff schrieb:</p>
<blockquote>
<p>Wie schon geschrieben gibt es nur diese Anforderungen:</p>
<p>- Elemente hinten anhängen<br />
- beliebige Elemente entfernen<br />
- durch die Liste durchgehen können<br />
- Tempo<br />
- Effizienz<br />
- Tempo<br />
- Effizienz</p>
<p>(habe ich Tempo und Effizienz schon erwähnt?) <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>
</blockquote>
<p>Zeit messen. Zeit messen, zeit. Messen Zeit messen Zeit messen Zeit messen.</p>
<p>Zeit messen:<br />
- Zeit messen<br />
- Zeit messen</p>
<p>Zeit messen...Zeit messen! <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="🙂"
    /><br />
Zeit messen Zeit messen Zeit messen.</p>
<p>Zeit messen,<br />
Zeit messen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255523</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:25:17 GMT]]></title><description><![CDATA[<p>Smpff schrieb:</p>
<blockquote>
<p>- Elemente hinten anhängen whatever<br />
- beliebige Elemente entfernen list/deque<br />
- durch die Liste durchgehen können whatever</p>
</blockquote>
<p>Aber wo genau ist das Problem dabei einfach std::list durch std::whatever auszutauschen und zu messen was schneller ist? (Und Performance ist keine Anforderung, sondern das Ziel.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255524</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:25:53 GMT]]></title><description><![CDATA[<p>Smpff schrieb:</p>
<blockquote>
<p>Wie schon geschrieben gibt es nur diese Anforderungen:<br />
- Elemente hinten anhängen</p>
</blockquote>
<p>Das ist schonmal wichtig. D.h. du benötigst einen sequenziellen Container. D.h. du hast entweder vector, deque oder list zur Auswahl.</p>
<p>Smpff schrieb:</p>
<blockquote>
<p>- durch die Liste durchgehen können</p>
</blockquote>
<p>D.h. du brauchst kein random access, du willst immer nur von vorne nach hinten durchgehen? Dann nimmst du <code>std::list</code> .</p>
<p>Smpff schrieb:</p>
<blockquote>
<p>ich habe momentan eine Liste, in der lediglich Daten hinten angehängt, ab und zu mal ein Element von einer beliebigen Position gelöscht und die ganze Liste von vorne nach hinten durchgegangen wird.</p>
</blockquote>
<p>Dann suchst du wohl das?</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;list&gt;
using namespace std;

int main()
{
	list&lt;int&gt; l;

	l.push_back(1);
	l.push_back(5);
	l.push_back(3);
	l.push_back(9);
	l.push_back(7);

	l.erase( remove(l.begin(), l.end(), 5), l.end() );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2255525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255525</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:25:53 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:29:26 GMT]]></title><description><![CDATA[<p>Und falls du mehrere Elemente auf einmal mit einer gewissen Bedingung löschen willst, dann schau dir mal das Erase-remove idiom an: <a href="http://en.wikipedia.org/wiki/Erase-remove_idiom" rel="nofollow">http://en.wikipedia.org/wiki/Erase-remove_idiom</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255527</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 13:58:37 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Dann suchst du wohl das? [...]</p>
</blockquote>
<p>Oder gleich <code>std::list::remove()</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255531</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 29 Sep 2012 13:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 15:05:39 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Smpff schrieb:</p>
<blockquote>
<p>- durch die Liste durchgehen können</p>
</blockquote>
<p>D.h. du brauchst kein random access, du willst immer nur von vorne nach hinten durchgehen? Dann nimmst du <code>std::list</code> .</p>
</blockquote>
<p>Das würde ich so absolut nicht sagen. Die list hat zwar schnellstes Entfernen von Elementen, aber dafür ist der Rest einfach furchtbar lahm. Sofern das Entfernen nicht sehr oft in sehr großen Listen vorkommt, wird daher ein Programm mit einem Container der alles andere schneller macht (z.B. vector) insgesamt schneller sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255554</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 29 Sep 2012 15:05:39 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 15:19:13 GMT]]></title><description><![CDATA[<p>Eigentlich sollte man immer vector nehmen, außer es gibt triftige Gründe dagegen. Und selbst dann, muss man zusätzlich zu den std-Containern auch noch die boost-Container mitbedenken.</p>
<p>out:<br />
Dieser Entscheidungsgraph führt leider nicht zu den besten Entscheidungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255557</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 29 Sep 2012 15:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sat, 29 Sep 2012 17:23:35 GMT]]></title><description><![CDATA[<p>Smpff schrieb:</p>
<blockquote>
<p>Wie schon geschrieben gibt es nur diese Anforderungen:</p>
<p>- Elemente hinten anhängen<br />
- beliebige Elemente entfernen<br />
- durch die Liste durchgehen können<br />
- Tempo<br />
- Effizienz<br />
- Tempo<br />
- Effizienz</p>
</blockquote>
<p><code>vector::pop_back</code> entfernt auch ein &quot;beliebiges&quot; Element. Du musst dich schon präziser ausdrücken, wenn du sinnvolle Antworten möchtest. Soll ein Element anhand seines Wertes entfernt werden, seiner Position oder seiner Identität?<br />
Was für Elemente sind das überhaupt? Muss die Reihenfolge der Elemente gleich bleiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255578</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 29 Sep 2012 17:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 13:54:27 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p><code>vector::pop_back</code> entfernt auch ein &quot;beliebiges&quot; Element.</p>
</blockquote>
<p>Falsch, das entfernt nicht ein beliebiges Element sondern exakt das letzte.</p>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Du musst dich schon präziser ausdrücken, wenn du sinnvolle Antworten möchtest. Soll ein Element anhand seines Wertes entfernt werden, seiner Position oder seiner Identität?<br />
Was für Elemente sind das überhaupt? Muss die Reihenfolge der Elemente gleich bleiben?</p>
</blockquote>
<p>Die Reihenfolge muss nicht gleich bleiben. Ob ich ein Element entfernen möchte, entscheide ich, während ich durch die Liste durchgehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255784</guid><dc:creator><![CDATA[Smpff]]></dc:creator><pubDate>Sun, 30 Sep 2012 13:54:27 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 14:10:08 GMT]]></title><description><![CDATA[<p>std::vector ist ideal für dich. Wenn die Reihenfolge egal ist, besteht eben immer die Möglichkeit das aktuelle Element mit dem letzten zu swappen und recht effizient entfernen zu können. In allen anderen Bereichen ist der vector den anderen Containern sowieso total überlegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255786</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sun, 30 Sep 2012 14:10:08 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 16:12:40 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<p>std::vector ist ideal für dich. Wenn die Reihenfolge egal ist, besteht eben immer die Möglichkeit das aktuelle Element mit dem letzten zu swappen und recht effizient entfernen zu können. In allen anderen Bereichen ist der vector den anderen Containern sowieso total überlegen.</p>
</blockquote>
<p>Das gibt es fertig als <code>std::remove_if</code> :</p>
<pre><code class="language-cpp">std::vector&lt;T&gt; elements;

//Iteriert über den vector und entfernt effizient die gewünschten Elemente.
//Effizient heißt hier, dass der Aufwand für das Entfernen pro Element konstant ist. Der naive Ansatz ist üblicherweise ein erase(it) pro Element, was lineare Laufzeit hat.
elements.erase(
	std::remove_if(
		elements.begin(),
		elements.end(),
		[](T &amp;element) -&gt; bool
	{
		//Einschränkungen: Der vector darf hier nicht in seiner Größe verändert
		//werden, weil sonst die Iteratoren ungültig würden.
		//Während des Iterierens kann sich die Reihenfolge der Elemente ändern.

		//..

		if (element.soll_geloescht_werden())
		{
			return true;
		}

		//..
		return false;
	}),
	elements.end());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2255825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255825</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sun, 30 Sep 2012 16:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 16:19:45 GMT]]></title><description><![CDATA[<p>Ist das nicht langsamer? <a href="http://cplusplus.com/reference" rel="nofollow">cplusplus.com/reference</a> sagt, das ist so implementiert (äquivalent dazu):</p>
<pre><code class="language-cpp">template &lt; class ForwardIterator, class Predicate &gt;
  ForwardIterator remove_if ( ForwardIterator first, ForwardIterator last,
                              Predicate pred )
{
  ForwardIterator result = first;
  for ( ; first != last; ++first)
    if (!pred(*first)) *result++ = *first;
  return result;
}
</code></pre>
<p>Hier findet kein swap statt, sondern alle Elemente exklusive der zu löschenden werden ins Resultat kopiert. Ich weiß nicht, inwiefern das vom Compiler optimiert wird und der Algorithmus ist auch sicher besser als ein Neusortierungen vom vector, jedoch erscheint mir Swap immer noch besser, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255829</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sun, 30 Sep 2012 16:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 16:43:06 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Ist das nicht langsamer? <a href="http://cplusplus.com/reference" rel="nofollow">cplusplus.com/reference</a> sagt, das ist so implementiert (äquivalent dazu):</p>
<pre><code class="language-cpp">template &lt; class ForwardIterator, class Predicate &gt;
  ForwardIterator remove_if ( ForwardIterator first, ForwardIterator last,
                              Predicate pred )
{
  ForwardIterator result = first;
  for ( ; first != last; ++first)
    if (!pred(*first)) *result++ = *first;
  return result;
}
</code></pre>
<p>Hier findet kein swap statt, sondern alle Elemente exklusive der zu löschenden werden ins Resultat kopiert. Ich weiß nicht, inwiefern das vom Compiler optimiert wird und der Algorithmus ist auch sicher besser als ein Neusortierungen vom vector, jedoch erscheint mir Swap immer noch besser, oder?</p>
</blockquote>
<p>Selbstverständlich darf das auch mit <code>swap</code> oder <code>move</code> implementiert sein. Es überrascht mich gerade ein wenig, dass es nicht so vorgeschrieben ist. Ob das hier einen Unterschied macht, weiß ich nicht, denn der Fragesteller will uns ja nicht den Elementtyp verraten.</p>
<p>Man kann auch<a href="http://en.cppreference.com/w/cpp/algorithm/partition" rel="nofollow"> <code>partition</code> </a>nehmen, das benutzt <code>swap</code> (in der Referenz wird <code>std::swap</code> verwendet, aber in der Praxis wird das wohl mit ADL-Unterstützung implementiert).</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iostream&gt;

int main()
{
	std::vector&lt;int&gt; elements = {1, 2, 3, 4, 5};

	//Iteriert über den vector und entfernt effizient die gewünschten Elemente.
	//Effizient heißt hier, dass der Aufwand für das Entfernen pro Element konstant ist. Der naive Ansatz ist üblicherweise ein erase(it) pro Element, was lineare Laufzeit hat.
	elements.erase(
		std::partition(
			elements.begin(),
			elements.end(),
			[](int &amp;element) -&gt; bool
		{
			//Einschränkungen: Der vector darf hier nicht in seiner Größe verändert
			//werden, weil sonst die Iteratoren ungültig würden.
			//Während des Iterierens kann sich die Reihenfolge der Elemente ändern.

			//..

			if (element % 2)
			{
				//false für Entfernen
				return false;
			}

			//..
			return true;
		}),
		elements.end());

	for (auto i = elements.begin(); i != elements.end(); ++i)
	{
		std::cout &lt;&lt; *i &lt;&lt; &quot;\n&quot;;
	}
}
</code></pre>
<pre><code>2
4
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2255835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255835</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sun, 30 Sep 2012 16:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 17:20:49 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Selbstverständlich darf das auch mit <code>swap</code> oder <code>move</code> implementiert sein.</p>
</blockquote>
<p>Nein, kann es nicht. Denn remove_if hat die Reihenfolge der Elemente beizubehalten.</p>
<p>Hier soll eine spezielle Eigenart eines bestimmten Containers unter der Nebenbedingung, dass die Reihenfolge egal ist ausgenutzt werden. Da kannst du nicht einen ganz allgemeinen Algorithmus drauf loslassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255847</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 30 Sep 2012 17:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 17:54:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Selbstverständlich darf das auch mit <code>swap</code> oder <code>move</code> implementiert sein.</p>
</blockquote>
<p>Nein, kann es nicht. Denn remove_if hat die Reihenfolge der Elemente beizubehalten.</p>
</blockquote>
<p>Kannst du erklären, warum das nicht mit <code>move</code> funktionieren soll?</p>
<p>Immerhin erfordert <code>remove_if</code> , dass die Elemente <em>MoveAssignable</em> sind:</p>
<pre><code>25.3.8 Remove
[...]
template&lt;class ForwardIterator, class Predicate&gt;
ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
Predicate pred);
[...]
The type of *first shall satisfy the MoveAssignable requirements
</code></pre>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Hier soll eine spezielle Eigenart eines bestimmten Containers unter der Nebenbedingung, dass die Reihenfolge egal ist ausgenutzt werden. Da kannst du nicht einen ganz allgemeinen Algorithmus drauf loslassen.</p>
</blockquote>
<p>Ja, ich hatte nicht bedacht, dass <code>remove_if</code> stabil ist.<br />
Aber <code>partition</code> ist das nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255856</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sun, 30 Sep 2012 17:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to STL: list, vector oder was sonst nehmen? on Sun, 30 Sep 2012 19:28:05 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Selbstverständlich darf das auch mit <code>swap</code> oder <code>move</code> implementiert sein.</p>
</blockquote>
<p>Nein, kann es nicht. Denn remove_if hat die Reihenfolge der Elemente beizubehalten.</p>
</blockquote>
<p>Kannst du erklären, warum das nicht mit <code>move</code> funktionieren soll?</p>
</blockquote>
<p>Das bezog sich vor allem auf das swap. Denk auch dran, dass ein move hier auch nicht die ideale Lösung ist. Es müssen immer noch alle Elemente um eine Position nach vorne geschoben werden, ob durch klassische Zuweisung oder move ist da nur ein Details.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2255882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2255882</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 30 Sep 2012 19:28:05 GMT</pubDate></item></channel></rss>