<?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[Set mit Values einer Map initialisieren]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne eine Variable s vom Typ set&lt;int&gt; mit den Values einer Variable m vom Typ map&lt;unsigned, int&gt; initialisieren. Wenn also m die Key-Value-Paare 0 -&gt; 1, 2 -&gt; 3, 4 -&gt; 3, 5 -&gt; -1 enthält, soll s mit {1, 3, -1} initialisiert werden. Geht das irgendwie mit einem Einzeiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281807/set-mit-values-einer-map-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 12:19:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281807.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Feb 2011 11:20:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 11:20:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne eine Variable s vom Typ set&lt;int&gt; mit den Values einer Variable m vom Typ map&lt;unsigned, int&gt; initialisieren. Wenn also m die Key-Value-Paare 0 -&gt; 1, 2 -&gt; 3, 4 -&gt; 3, 5 -&gt; -1 enthält, soll s mit {1, 3, -1} initialisiert werden. Geht das irgendwie mit einem Einzeiler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018176</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Tue, 08 Feb 2011 11:20:48 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 11:32:34 GMT]]></title><description><![CDATA[<p>Mit Lambda-Ausdrücken:</p>
<pre><code class="language-cpp">#include &lt;set&gt;
#include &lt;map&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

int main()
{
	std::map&lt;int, int&gt; m;
	m[0] = 1;
	m[2] = 3;
	m[4] = 3;
	m[5] = -1;

	std::set&lt;int&gt; s;
	std::transform(m.begin(), m.end(), std::inserter(s, s.begin()), [](std::pair&lt;int, int&gt; p) { return p.second; });
}
</code></pre>
<p>Mit C++98 sehe ich gerade keine einzeilige Lösung, da mir nichts Vorgefertigtes zur Extraktion von <code>second</code> aus <code>pair</code> einfällt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018181</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 08 Feb 2011 11:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 12:54:34 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>Geht das irgendwie mit einem Einzeiler?</p>
</blockquote>
<p>Wenn man von includes absieht geht fast alles mit einem Einzeiler...</p>
<p>&quot;Zweizeiler&quot;:</p>
<pre><code class="language-cpp">#include &lt;set&gt;
#include &lt;map&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

int main()
{
    std::map&lt;int, int&gt; m;
    m[0] = 1;
    m[2] = 3;
    m[4] = 3;
    m[5] = -1;

    std::set&lt;int&gt; s;
    struct {int operator()(std::pair&lt;int, int&gt; p) { return p.second; }} seconder;
    std::transform(m.begin(), m.end(), std::inserter(s, s.begin()), seconder);
}
</code></pre>
<p>technisch ein Einzeiler:</p>
<pre><code class="language-cpp">#include &lt;set&gt;
#include &lt;map&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

int main()              \
{ \
    std::map&lt;int, \
int&gt; m; \
    m[0] = \
1; \
    m[2] = 3;\
    m[4] = 3;          \
    m[5] = -1;\
\
    std::set&lt;int&gt; s;   \
    struct   \
 {int \
 operator() \
(std::pair&lt;int, int&gt; p) \
{ return p.second; \
}} seconder;\
    std::transform\
                             (m.begin(), m.end(),         \
std::inserter(s, \
s.begin()), seconder);    \
}
</code></pre>
<p>oder so</p>
<pre><code class="language-cpp">#include &lt;set&gt;
#include &lt;map&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
int main(){std::map&lt;int,int&gt;m;m[0]=1;m[2]=3;m[4]=3;m[5]=-1;std::set&lt;int&gt;s;struct{int operator()(std::pair&lt;int,int&gt;p){return p.second;}}seconder;std::transform(m.begin(),m.end(),std::inserter(s,s.begin()),seconder);}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2018220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018220</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 Feb 2011 12:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 13:39:53 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Wenn ich recht entsinne, durfte man lokal definierte Klassen nicht als Template-Argument benutzen. Mag aber auch sein, dass ich mich täusche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018247</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 08 Feb 2011 13:39:53 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 15:04:28 GMT]]></title><description><![CDATA[<p>MSVC hats gefressen, gcc 4.1.2 (<a href="http://codepad.org" rel="nofollow">codepad.org</a>) nicht - ist natürlich kein Argument, weder dafür noch dagegen. Ich belese mich mal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018289</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 Feb 2011 15:04:28 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 15:13:34 GMT]]></title><description><![CDATA[<p>Soweit ich weiss, ist das ab C++0x erlaubt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018291</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 08 Feb 2011 15:13:34 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 15:13:50 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>MSVC hats gefressen, gcc 4.1.2 (<a href="http://codepad.org" rel="nofollow">codepad.org</a>) nicht - ist natürlich kein Argument, weder dafür noch dagegen. Ich belese mich mal...</p>
</blockquote>
<p>Nachtrag:</p>
<p>ISO/IEC 14882, §14.3.1,2 schrieb:</p>
<blockquote>
<p>A local type [...] shall not be used as a <em>template-argument</em> for a template <em>type-parameter</em>.</p>
</blockquote>
<p>Darf also nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018292</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 Feb 2011 15:13:50 GMT</pubDate></item><item><title><![CDATA[Reply to Set mit Values einer Map initialisieren on Tue, 08 Feb 2011 15:22:45 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Soweit ich weiss, ist das ab C++0x erlaubt.</p>
</blockquote>
<p>Jup.</p>
<p>Working draft N3225, §14.3.1,2 schrieb:</p>
<blockquote>
<p>[<em>Example:</em></p>
<pre><code>template &lt;class T&gt; class X;
template &lt;class T&gt; void f(T t) {}
struct {} unnamed_obj;

void f() {
  struct A {};
  enum { e1 };
  typedef struct {} B;
  B b;
  X&lt;A&gt; x1;          //OK
  X&lt;A*&gt; x2;         //OK
  X&lt;B&gt; x3;          //OK
  f(e1);            //OK
  f(unnamed_obj);   //OK
  f(b);             //OK
}
</code></pre>
<p><em>-- end example</em>][<em>Note:</em> a template argument may be an incomplete type (3.9). <em>-- end note</em>]</p>
</blockquote>
<p>Zeile 14 wäre das, was in meinem Code oben nach C++98 noch verboten ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2018298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2018298</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 Feb 2011 15:22:45 GMT</pubDate></item></channel></rss>