<?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[Iterator, template ADDUP]]></title><description><![CDATA[<p>Für einen Container mit dem Inhalt<br />
1 2 3 4 5 8<br />
liefert AddUp<br />
9 7 7</p>
<p>also es werden immer die äusersten Addiert<br />
Das ganze ist natürlich generisch zu machen.</p>
<p>Hab soweit hinbekommen das es für int, double funktioniert, allerdings scheitert er dann am string.</p>
<p>hier das Modul:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

template &lt;typename TItor, typename TStream&gt;
void AddUp(TItor begin, TItor end, TStream &amp;stream){

	end--;//damit der end iterator auf das letzte element zeigt und nicht danach

	int size=1;
	TItor value=begin;
	while(value != end){

		value++; size++;

	}//damit wird die größe des containers bestimmt

	if(size % 2 !=0){//prüft ob der container eine gerade oder ungerade größe besitzt

		while(begin != end){//container wird durchlaufen

			*stream++=*begin + *end;//addiert die werte und übergibt sie stream

			begin++; end--;

		}
		*stream=*begin;

	}
	else{	//ähnlich wie oben nur für ungerade größen

		TItor mid=begin;
		size=size/2;
		while(size&gt;0){

			mid++;
			size--;
		}

		while(begin != mid){

			*stream++=*begin + *end;

			begin++; end--;;

		}	
	}
}
</code></pre>
<p>Testtreiber:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;add.h&quot;
#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;
using namespace std;

int main(){

	ostream_iterator&lt;int&gt; out_it (cout,&quot;, &quot;);

	vector&lt;char&gt; f;
	vector&lt;string&gt; s;

	s.push_back(&quot;AA&quot;);
	s.push_back(&quot;BB&quot;);
	s.push_back(&quot;CC&quot;);
	s.push_back(&quot;DD&quot;);
	 s.push_back(&quot;EE&quot;);

	f.push_back(1);
	f.push_back(2);

	f.push_back(3);

	f.push_back(5);
	f.push_back(6);
	f.push_back(8);

	AddUp(s.begin(), s.end(), out_it);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/304312/iterator-template-addup</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 00:49:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304312.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Jun 2012 16:02:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 16:02:30 GMT]]></title><description><![CDATA[<p>Für einen Container mit dem Inhalt<br />
1 2 3 4 5 8<br />
liefert AddUp<br />
9 7 7</p>
<p>also es werden immer die äusersten Addiert<br />
Das ganze ist natürlich generisch zu machen.</p>
<p>Hab soweit hinbekommen das es für int, double funktioniert, allerdings scheitert er dann am string.</p>
<p>hier das Modul:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;

template &lt;typename TItor, typename TStream&gt;
void AddUp(TItor begin, TItor end, TStream &amp;stream){

	end--;//damit der end iterator auf das letzte element zeigt und nicht danach

	int size=1;
	TItor value=begin;
	while(value != end){

		value++; size++;

	}//damit wird die größe des containers bestimmt

	if(size % 2 !=0){//prüft ob der container eine gerade oder ungerade größe besitzt

		while(begin != end){//container wird durchlaufen

			*stream++=*begin + *end;//addiert die werte und übergibt sie stream

			begin++; end--;

		}
		*stream=*begin;

	}
	else{	//ähnlich wie oben nur für ungerade größen

		TItor mid=begin;
		size=size/2;
		while(size&gt;0){

			mid++;
			size--;
		}

		while(begin != mid){

			*stream++=*begin + *end;

			begin++; end--;;

		}	
	}
}
</code></pre>
<p>Testtreiber:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;add.h&quot;
#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;
using namespace std;

int main(){

	ostream_iterator&lt;int&gt; out_it (cout,&quot;, &quot;);

	vector&lt;char&gt; f;
	vector&lt;string&gt; s;

	s.push_back(&quot;AA&quot;);
	s.push_back(&quot;BB&quot;);
	s.push_back(&quot;CC&quot;);
	s.push_back(&quot;DD&quot;);
	 s.push_back(&quot;EE&quot;);

	f.push_back(1);
	f.push_back(2);

	f.push_back(3);

	f.push_back(5);
	f.push_back(6);
	f.push_back(8);

	AddUp(s.begin(), s.end(), out_it);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2218891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218891</guid><dc:creator><![CDATA[wrock]]></dc:creator><pubDate>Sun, 03 Jun 2012 16:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 16:21:58 GMT]]></title><description><![CDATA[<p>und?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218899</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 03 Jun 2012 16:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 16:43:31 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>und?</p>
</blockquote>
<p>?</p>
<p>es scheitert am string, also such ich nach ner methode z.b. string vector<br />
&quot;AA&quot;, &quot;BB&quot;, &quot;CC&quot;, &quot;DD&quot;, &quot;EE&quot; vom<br />
Value-Typ string liefert AddUp &quot;AAEE&quot; &quot;BBDD&quot;</p>
<p>zurückgibt</p>
<p>gibts da ne eigene stl funktion oder was wär ne mögliche methode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218906</guid><dc:creator><![CDATA[wrock]]></dc:creator><pubDate>Sun, 03 Jun 2012 16:43:31 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 16:44:22 GMT]]></title><description><![CDATA[<p>zeile 29</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218907</guid><dc:creator><![CDATA[wrock]]></dc:creator><pubDate>Sun, 03 Jun 2012 16:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 16:47:53 GMT]]></title><description><![CDATA[<p>Dein out_it ist für int, der muss für string sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218908</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 03 Jun 2012 16:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 17:16:48 GMT]]></title><description><![CDATA[<p>Ist so etwas gemeint?</p>
<pre><code class="language-cpp">template &lt;typename BidirectionalIterator, typename OutputIterator&gt;
void AddUp(BidirectionalIterator begin, BidirectionalIterator end, OutputIterator out){
    while ( begin != end )
        *out++ = begin != --end ? *begin++ + *end : *begin;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2218918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218918</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 03 Jun 2012 17:16:48 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 17:22:52 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Dein out_it ist für int, der muss für string sein.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /> das wars thx</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> so gehts natürlich auch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218922</guid><dc:creator><![CDATA[wrock]]></dc:creator><pubDate>Sun, 03 Jun 2012 17:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator, template ADDUP on Sun, 03 Jun 2012 17:26:11 GMT]]></title><description><![CDATA[<p>Edit: Schwachsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218923</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sun, 03 Jun 2012 17:26:11 GMT</pubDate></item></channel></rss>