<?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[vector&amp;lt;T&amp;gt; joinen]]></title><description><![CDATA[<p>Wie kann ich einen konstanten Vektor mit der Vereinigung zweier anderer konstanter Vektoren initialisieren? C++11</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297097/vector-lt-t-gt-joinen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 14:38:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297097.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Dec 2011 10:21:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 10:21:03 GMT]]></title><description><![CDATA[<p>Wie kann ich einen konstanten Vektor mit der Vereinigung zweier anderer konstanter Vektoren initialisieren? C++11</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158639</guid><dc:creator><![CDATA[bluber22]]></dc:creator><pubDate>Mon, 19 Dec 2011 10:21:03 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 10:43:54 GMT]]></title><description><![CDATA[<p>Das kommt darauf an, was Du wirklich mit Vereinigung meinst.<br />
Das <a href="http://www.cplusplus.com/reference/algorithm/set_union/" rel="nofollow">http://www.cplusplus.com/reference/algorithm/set_union/</a> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158649</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Mon, 19 Dec 2011 10:43:54 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 10:56:54 GMT]]></title><description><![CDATA[<p>Ja, das meine ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158652</guid><dc:creator><![CDATA[bluber22]]></dc:creator><pubDate>Mon, 19 Dec 2011 10:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 11:34:16 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;utility&gt;
#include &lt;vector&gt;

template &lt;typename Iter&gt;
struct joining_iterator : std::iterator&lt;std::input_iterator_tag, typename Iter::value_type&gt;
{
	Iter r1begin;
	Iter r1end;
	Iter r2begin;

	typedef typename Iter::value_type value_type;

	joining_iterator(Iter r1begin, Iter r1end, Iter r2begin)
		: r1begin(r1begin)
		, r1end(r1end)
		, r2begin(r2begin)
	{}

	value_type&amp; operator * ()
	{
		return const_cast&lt;value_type&amp;&gt;(**static_cast&lt;joining_iterator const*&gt;(this));
	}

	value_type const&amp; operator * () const
	{
		if(r1begin != r1end)
			return *r1begin;

		return *r2begin;
	}

	value_type* operator -&gt; ()
	{
		return &amp;**this;
	}

	value_type const* operator -&gt; () const
	{
		return &amp;**this;
	}

	joining_iterator&amp; operator ++ ()
	{
		if(r1begin != r1end)
			++r1begin;
		else
			++r2begin;

		return *this;
	}

	joining_iterator operator ++ (int)
	{
		joining_iterator tmp(*this);
		++*this;
		return tmp;
	}

	friend bool operator == (joining_iterator const&amp; first, joining_iterator const&amp; second)
	{
		return first.r1begin == second.r1begin &amp;&amp; first.r1end == second.r1end &amp;&amp; first.r2begin == second.r2begin;
	}

	friend bool operator != (joining_iterator const&amp; first, joining_iterator const&amp; second)
	{
		return !(first == second);
	}
};

template &lt;typename Iter&gt;
std::pair&lt;joining_iterator&lt;Iter&gt;, joining_iterator&lt;Iter&gt;&gt; join_ranges(Iter begin1, Iter end1, Iter begin2, Iter end2)
{
	return std::make_pair(joining_iterator&lt;Iter&gt;(begin1, end1, begin2), joining_iterator&lt;Iter&gt;(end1, end1, end2));
}

int main()
{
	std::vector&lt;int&gt; a = { 0, 1, 2, 3, 4 };
	std::vector&lt;int&gt; b = { 5, 6, 7, 8, 9 };

	auto range = join_ranges(a.begin(), a.end(), b.begin(), b.end());

	std::vector&lt;int&gt; c(range.first, range.second);

	for(int i : c)
		std::cout &lt;&lt; i &lt;&lt; '\n';
}
</code></pre>
<blockquote>
<p>0 1 2 3 4 5 6 7 8 9</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2158659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158659</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 19 Dec 2011 11:34:16 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 11:40:38 GMT]]></title><description><![CDATA[<p>Quark, mal wieder, leider. Das ist leider nur eine maximal umständliche Version, zwei Container hintereinanderzuhängen. Mit der sortierten Vereinigung hat das gar nichts zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158669</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 19 Dec 2011 11:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 12:12:11 GMT]]></title><description><![CDATA[<p>und wie mache ich es dann einfacher, zwei unsortiete Container aneinanderzuhängen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158677</guid><dc:creator><![CDATA[bluber22]]></dc:creator><pubDate>Mon, 19 Dec 2011 12:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 12:24:01 GMT]]></title><description><![CDATA[<p>Auf die Schnelle,eventuell geht es noch einfacher:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
int main()
{
 const std::vector&lt;int&gt; v1 {3,4,1,5};
 const std::vector&lt;int&gt; v2 {2,4,5,1,6,7};
 const std::vector&lt;int&gt; v3 = ([&amp;v1,&amp;v2]()-&gt;std::vector&lt;int&gt; 
 {
  std::vector&lt;int&gt; result;
  std::set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),std::back_inserter(result));
  std::sort(result.begin(),result.end());
  auto new_end = std::unique(result.begin(),result.end());
  return std::vector&lt;int&gt;(result.begin(),new_end);
 })();
  std::for_each(v3.begin(),v3.end(),[](int i) { std::cout &lt;&lt; i &lt;&lt; ' ';});
 return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2158686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158686</guid><dc:creator><![CDATA[einwurf]]></dc:creator><pubDate>Mon, 19 Dec 2011 12:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 12:40:38 GMT]]></title><description><![CDATA[<p>einwurf schrieb:</p>
<blockquote>
<p>Auf die Schnelle,eventuell geht es noch einfacher:<br />
...</p>
</blockquote>
<p>set_union erfordert bereits sortierte Eingangssequenzen. Das Sortieren muss also ggf. bereits vorher durchgeführt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158692</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 19 Dec 2011 12:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 12:43:10 GMT]]></title><description><![CDATA[<p>Ich brauche weder Sortieren noch Unique.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158693</guid><dc:creator><![CDATA[bluber22]]></dc:creator><pubDate>Mon, 19 Dec 2011 12:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 13:07:42 GMT]]></title><description><![CDATA[<p>So:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;set&gt;

int main()
{
    std::vector&lt;float&gt; const v1(...);
    std::vector&lt;float&gt; const v2(...);

    std::set&lt;float&gt; union_set;
    union_set.insert(v1.begin(), v1.end());
    union_set.insert(v2.begin(), v2.end());

    //wenn es denn ein const vector sein muss...

    std::vector&lt;float&gt; const union_vector(union_set.begin(), union_set.end());
    //fertig    
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2158703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158703</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 19 Dec 2011 13:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 15:06:47 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Das ist leider nur eine maximal umständliche Version, zwei Container hintereinanderzuhängen.</p>
</blockquote>
<p>Sie ist vielleicht umständlich, aber wenigstens cool.</p>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Mit der sortierten Vereinigung hat das gar nichts zu tun.</p>
</blockquote>
<p>Er hat nie was von sortierter Vereinigung gesagt, folglich ist das genau das erfragte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158779</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 19 Dec 2011 15:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 15:11:11 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Er hat nie was von sortierter Vereinigung gesagt, folglich ist das genau das erfragte.</p>
</blockquote>
<p>In einer Vereinigung gibt es keine Doubletten, ob sie nun sortiert ist, oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2158781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158781</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 19 Dec 2011 15:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 15:48:20 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Er hat nie was von sortierter Vereinigung gesagt, folglich ist das genau das erfragte.</p>
</blockquote>
<blockquote>
<p>Constructs a sorted range beginning in the location pointed by result with the set union of the two sorted ranges [first1,last1) and [first2,last2) as content.</p>
</blockquote>
<p>bluber22 schrieb:</p>
<blockquote>
<p>Ja, das meine ich.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2158800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158800</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 19 Dec 2011 15:48:20 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 15:50:00 GMT]]></title><description><![CDATA[<p>Na gut, ausnahmsweise. Mein Iterator ist trotzdem cooler als irgendein Algorithmus! <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/2158803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158803</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 19 Dec 2011 15:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 17:20:51 GMT]]></title><description><![CDATA[<p>Aber .. ?</p>
<pre><code>Ich brauche weder Sortieren noch Unique.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2158859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158859</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Mon, 19 Dec 2011 17:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;T&amp;gt; joinen on Mon, 19 Dec 2011 17:32:45 GMT]]></title><description><![CDATA[<p>Warum geht folgendes nicht?</p>
<pre><code class="language-cpp">template &lt;typename ListType&gt; inline ListType append(const ListType&amp; v1, const ListType&amp; v2)
{
	ListType result;
	set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(result));
	return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2158868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2158868</guid><dc:creator><![CDATA[original poster]]></dc:creator><pubDate>Mon, 19 Dec 2011 17:32:45 GMT</pubDate></item></channel></rss>