<?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[Duplikate in Container finden]]></title><description><![CDATA[<p>Hi, ich versuche mich gerade an einem Pokerspiel und hab mir gedacht, dass ich mal mit einem der schwersten Teile anfange, dem &quot;Hand-Auswerter&quot;. Da ich keinen aus dem Internet benutzen möchte hab ich angefangen einen eigenen zu schreiben ^^ So jetzt zu meiner Frage, die folgende Funktion sucht aus einem Vector Werte, die wiederholt vorkommen,speichert dann die Anzahl an Wiederholungen in einem neuen Vector und gibt diesen dann zurück. Ist das so viel zu kompliziert geschrieben/ geht das einfacher oder denkt ihr das ist gut so fürs Erste ? ^^</p>
<pre><code>std::vector&lt;unsigned short&gt; findDuplicates(std::vector&lt;unsigned short&gt; v)
{
	std::vector&lt;unsigned short&gt; result;
	bool cancel = true;

	std::sort(v.begin(), v.end(), [](unsigned short i, unsigned short j){ return i &lt; j; });

	while (cancel == true)
	{
		auto it = std::adjacent_find(v.begin(), v.end());

		if (it != v.end())
		{
			auto i = std::count(it, v.end(), *it); 
			v.erase(it, it + (i - 1));

			result.push_back(i);
		}
		else {
			cancel = false;
		}
	}
	return result;
}
</code></pre>
<p>Schon einmal danke für jede Hilfe <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/topic/335895/duplikate-in-container-finden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 20 Apr 2026 00:26:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335895.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Dec 2015 19:27:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 19:27:48 GMT]]></title><description><![CDATA[<p>Hi, ich versuche mich gerade an einem Pokerspiel und hab mir gedacht, dass ich mal mit einem der schwersten Teile anfange, dem &quot;Hand-Auswerter&quot;. Da ich keinen aus dem Internet benutzen möchte hab ich angefangen einen eigenen zu schreiben ^^ So jetzt zu meiner Frage, die folgende Funktion sucht aus einem Vector Werte, die wiederholt vorkommen,speichert dann die Anzahl an Wiederholungen in einem neuen Vector und gibt diesen dann zurück. Ist das so viel zu kompliziert geschrieben/ geht das einfacher oder denkt ihr das ist gut so fürs Erste ? ^^</p>
<pre><code>std::vector&lt;unsigned short&gt; findDuplicates(std::vector&lt;unsigned short&gt; v)
{
	std::vector&lt;unsigned short&gt; result;
	bool cancel = true;

	std::sort(v.begin(), v.end(), [](unsigned short i, unsigned short j){ return i &lt; j; });

	while (cancel == true)
	{
		auto it = std::adjacent_find(v.begin(), v.end());

		if (it != v.end())
		{
			auto i = std::count(it, v.end(), *it); 
			v.erase(it, it + (i - 1));

			result.push_back(i);
		}
		else {
			cancel = false;
		}
	}
	return result;
}
</code></pre>
<p>Schon einmal danke für jede Hilfe <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/2479999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479999</guid><dc:creator><![CDATA[xxXLukas97Xxx]]></dc:creator><pubDate>Fri, 18 Dec 2015 19:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 19:54:24 GMT]]></title><description><![CDATA[<pre><code>std::sort(v.begin(), v.end(), [](unsigned short i, unsigned short j){ return i &lt; j; });
</code></pre>
<p>Wenn einfach der Größe nach sortiert werden soll, musst du kein Vergleichsprädikat angeben.</p>
<pre><code>while (cancel == true)
</code></pre>
<p>Vergleich mit true? Und ist das nicht gerade das Gegenteil dessen, was <em>cancel</em> dem Wortsinn nach ausdrückt?</p>
<p>In Hinblick auf algorithmische Komplexität ungünstig sind:</p>
<pre><code>auto i = std::count(it, v.end(), *it);
</code></pre>
<p>Hier machst du keinen Gebrauch davon, dass der Container sortiert ist.</p>
<pre><code>v.erase(it, it + (i - 1));
</code></pre>
<p>Das scheint ist im Grunde überflüssig. Warum nicht einfach das nächste adjacent_find mit it + i als Anfangsiterator füttern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480007</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 18 Dec 2015 19:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 22:45:37 GMT]]></title><description><![CDATA[<p>Hi danke fürs Feedback <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 />
Hab den Code jetzt anhand deiner Vorschläge verbessert. Soweit besser ?</p>
<pre><code>std::vector&lt;unsigned short&gt; findDuplicates(std::vector&lt;unsigned short&gt; v)
{
	std::vector&lt;unsigned short&gt; result;
	bool cancel = false;

	std::sort(v.begin(), v.end());
	auto it = std::adjacent_find(v.begin(), v.end());

	while (!cancel)
	{
		if (it != v.end())
		{
			auto itr = std::adjacent_find(it, v.end(), std::not_equal_to&lt;unsigned short&gt;()) + 1;
			auto i = std::distance(it, itr);

			it = std::adjacent_find(it + i, v.end());

			result.push_back(i);
		}
		else {
			cancel = true;
		}
	}
	return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2480026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480026</guid><dc:creator><![CDATA[xxXLukas97Xxx]]></dc:creator><pubDate>Fri, 18 Dec 2015 22:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 22:52:59 GMT]]></title><description><![CDATA[<p>cancel riecht ungut. wenn möglich, return benutzen, uzm zu sagen, daß eine berechnung erledigt ist und das ergebnis feststeht.<br />
ginge hier ein while (oder do), aber ohne cancel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480028</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 18 Dec 2015 22:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 22:54:50 GMT]]></title><description><![CDATA[<pre><code>std::vector&lt;unsigned short&gt; findDuplicates(std::vector&lt;unsigned short&gt; v)
{
	std::vector&lt;unsigned short&gt; result;

	std::sort(v.begin(), v.end());
	auto it = std::adjacent_find(v.begin(), v.end());

	while (true)
	{
		if (it != v.end())
		{
			auto itr = std::adjacent_find(it, v.end(), std::not_equal_to&lt;unsigned short&gt;()) + 1;
			auto i = std::distance(it, itr);

			it = std::adjacent_find(it + i, v.end());

			result.push_back(i);
		}
		else {
			return result;
		}
	}
}
</code></pre>
<p>Also so ? <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/2480030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480030</guid><dc:creator><![CDATA[xxXLukas97Xxx]]></dc:creator><pubDate>Fri, 18 Dec 2015 22:54:50 GMT</pubDate></item><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 22:58:37 GMT]]></title><description><![CDATA[<p>xxXLukas97Xxx schrieb:</p>
<blockquote>
<p>Also so ? <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>
</blockquote>
<p>prächtig. <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="🤡"
    /><br />
Hab das Gefühl, daß Du da in Wirklichkeit sowas wie ein</p>
<pre><code>while(it != v.end())
</code></pre>
<p>versteckt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480031</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 18 Dec 2015 22:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to Duplikate in Container finden on Fri, 18 Dec 2015 23:03:24 GMT]]></title><description><![CDATA[<p>Oh ... *räusper* hoffe mal bis hier unten liest niemand <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="😃"
    /><br />
Danke <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/2480032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480032</guid><dc:creator><![CDATA[xxXLukas97Xxx]]></dc:creator><pubDate>Fri, 18 Dec 2015 23:03:24 GMT</pubDate></item></channel></rss>