<?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[Alle Teilmengen einer Menge ermittlen]]></title><description><![CDATA[<p>Ich habe einen vector&lt;T&gt; und will eine Schleife schreiben, die über alle Teilmengen des vector's iteriert (also ein vector&lt;map&lt;T,bool&gt;&gt; erstellt). Wie mache ich das am einfachsten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321056/alle-teilmengen-einer-menge-ermittlen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 13:14:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321056.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Oct 2013 09:53:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 09:53:14 GMT]]></title><description><![CDATA[<p>Ich habe einen vector&lt;T&gt; und will eine Schleife schreiben, die über alle Teilmengen des vector's iteriert (also ein vector&lt;map&lt;T,bool&gt;&gt; erstellt). Wie mache ich das am einfachsten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362085</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Tue, 22 Oct 2013 09:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 09:59:48 GMT]]></title><description><![CDATA[<p>Was die map&lt;T, bool&gt; damit zu tun hat versteh ich nicht ganz.</p>
<p>Aber teil dein Problem auf.</p>
<p>Erzeuge aus deinem Startvektor erstmal eine Liste, die alle Teilmengen enthält: Da sollte dann ein vector&lt;vector&lt;T&gt;&gt; rauskommen. Und da kannst du dann drüber iterieren.</p>
<p>Was hast du denn vor damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362087</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 22 Oct 2013 09:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:00:37 GMT]]></title><description><![CDATA[<p>wie soll denn die map aussehen? Eine Teilmenge von vector&lt;T&gt; wäre intuitiv wieder ein vector&lt;T&gt;. Somit wäre die Menge aller Teilmengen vector&lt;vector&lt;T&gt;&gt;.</p>
<p>BTW: std::set gibts auch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362089</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:00:37 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:02:20 GMT]]></title><description><![CDATA[<p>eine Teilmenge M von einem vector&lt;T&gt; ist gegeben durch eine map&lt;T,bool&gt; TM mit TM[m] == true, genau dann, wenn m in M liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362090</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:03:07 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Erzeuge aus deinem Startvektor erstmal eine Liste, die alle Teilmengen enthält:</p>
</blockquote>
<p>Das war gerade meine Frage, wie das geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362091</guid><dc:creator><![CDATA[Da sollte dann ein vector]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:05:42 GMT]]></title><description><![CDATA[<p>Enthält der vector&lt;T&gt; Duplikate?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362093</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:05:56 GMT]]></title><description><![CDATA[<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362094</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:05:56 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:11:10 GMT]]></title><description><![CDATA[<p>Eine Map zu benutzen ist unguenstig. Ich wuerd ein Bitset/Integer benutzen und inkrementieren. Bit i gibt an, ob das i-te Element der Teilmenge ist. Ein uint64_t sollte reichen, da du ueber die Potenzmenge einer Menge M mit |M| &gt; 64 nicht iterieren moechtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362096</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:13:39 GMT]]></title><description><![CDATA[<p>hmmmmmmmm schrieb:</p>
<blockquote>
<p>eine Teilmenge M von einem vector&lt;T&gt; ist gegeben durch eine map&lt;T,bool&gt; TM mit TM[m] == true, genau dann, wenn m in M liegt.</p>
</blockquote>
<p>was ist das denn für ein Käse? Warum so umständlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2362098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362098</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to Alle Teilmengen einer Menge ermittlen on Tue, 22 Oct 2013 10:19:51 GMT]]></title><description><![CDATA[<p>Ohne Rücksicht auf Effizienz, Eleganz, usw. hingeschrieben. völlig ungetestet.</p>
<pre><code class="language-cpp">map&lt;T,bool&gt; subset(const vector&lt;T&gt;&amp; elems, uint64_t x)
{
    map&lt;T,bool&gt; result;
    for ( uint64_t i = 1, j = 1ull &lt;&lt; elems.size(); i &lt; j; i &lt;&lt;= 1 )
        result[elems[i&rsqb;&rsqb; = ( x &amp; i ) != 0;
    return result;
}

vector&lt;map&lt;T,bool&gt;&gt; powerset(const vector&lt;T&gt;&amp; elems)
{
    assert( elems.size() &lt; 64 ); // sonst werden wir sowieso nicht fertig
    vector&lt;map&lt;T,bool&gt;&gt; result;
    for ( uint64_t i = 0, j = 1ull &lt;&lt; elems.size(); i &lt; j; ++i )
        result.emplace_back(subset(elems, i));
    return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2362100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2362100</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 22 Oct 2013 10:19:51 GMT</pubDate></item></channel></rss>