<?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[[erledigt] Template: Differenzvektor]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe nach langer Zeit mal wieder eine Frage. Ausgehend davon, dass mathematische Vektoren auch in C++ ihre Entsprechung mittels <code>std::vector</code> finden, möchte ich nun ein Template konzipieren, dass den Differenzvektor berechnet, also <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mover accent="true"><mi>y</mi><mo>⃗</mo></mover><mo>=</mo><mover accent="true"><mrow><mi>x</mi></mrow><mo>⃗</mo></mover><mi mathvariant="normal">_</mi><mn>1</mn><mo>−</mo><mover accent="true"><mrow><mi>x</mi></mrow><mo>⃗</mo></mover><mi mathvariant="normal">_</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">\vec y = \vec{x}\_1 - \vec{x}\_2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.71444em;"></span><span class="strut bottom" style="height:1.02444em;vertical-align:-0.31em;"></span><span class="base textstyle uncramped"><span class="mord accent"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="mord mathit" style="margin-right:0.03588em;">y</span></span><span style="top:0em;margin-left:0.11112em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="accent-body accent-vec"><span>⃗</span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mrel">=</span><span class="mord accent"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="mord textstyle cramped"><span class="mord mathit">x</span></span></span><span style="top:0em;margin-left:0.05556em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="accent-body accent-vec"><span>⃗</span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathrm">1</span><span class="mbin">−</span><span class="mord accent"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="mord textstyle cramped"><span class="mord mathit">x</span></span></span><span style="top:0em;margin-left:0.05556em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="accent-body accent-vec"><span>⃗</span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathrm">2</span></span></span></span></p>
<p>Die Zugehörige <strong>Funktion</strong> sieht bisher so aus</p>
<pre><code class="language-cpp">std::vector&lt;double&gt; 
  diff_vec( std::vector&lt;double&gt;::iterator first1,
            std::vector&lt;double&gt;::iterator last1,
            std::vector&lt;double&gt;::iterator first2 )
{
  std::vector&lt;double&gt; result;
  while( first1 != last1 ) {
    result.push_back( (*first1) - (*first2) );
    ++first1; ++first2;
  }
  return std::move( result );
}
</code></pre>
<p>Jetzt ist mein erster Versuch eines <strong>Templates</strong> folgender</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
  std::vector&lt;double&gt;  diff_vec( T first1, T last1,
                                 T first2 )
{
  std::vector&lt;double&gt; result;
  while( first1 != last1 ) {
    result.push_back( (*first1) - (*first2) );
    ++first1; ++first2;
  } 
  return std::move( result );
}
</code></pre>
<p>Und jetzt Frage: Geht das noch abstrakter? Also dass ich den Container nicht angeben muss? Ich meine dasselbe würde doch auch mit <code>std::list</code> funktionieren. Es benötigt nur einen Random Access Iterator?</p>
<p>Viele Grüße,<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330881/erledigt-template-differenzvektor</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 15:54:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330881.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Jan 2015 16:29:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Sat, 31 Jan 2015 12:48:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe nach langer Zeit mal wieder eine Frage. Ausgehend davon, dass mathematische Vektoren auch in C++ ihre Entsprechung mittels <code>std::vector</code> finden, möchte ich nun ein Template konzipieren, dass den Differenzvektor berechnet, also <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mover accent="true"><mi>y</mi><mo>⃗</mo></mover><mo>=</mo><mover accent="true"><mrow><mi>x</mi></mrow><mo>⃗</mo></mover><mi mathvariant="normal">_</mi><mn>1</mn><mo>−</mo><mover accent="true"><mrow><mi>x</mi></mrow><mo>⃗</mo></mover><mi mathvariant="normal">_</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">\vec y = \vec{x}\_1 - \vec{x}\_2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.71444em;"></span><span class="strut bottom" style="height:1.02444em;vertical-align:-0.31em;"></span><span class="base textstyle uncramped"><span class="mord accent"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="mord mathit" style="margin-right:0.03588em;">y</span></span><span style="top:0em;margin-left:0.11112em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="accent-body accent-vec"><span>⃗</span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mrel">=</span><span class="mord accent"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="mord textstyle cramped"><span class="mord mathit">x</span></span></span><span style="top:0em;margin-left:0.05556em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="accent-body accent-vec"><span>⃗</span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathrm">1</span><span class="mbin">−</span><span class="mord accent"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="mord textstyle cramped"><span class="mord mathit">x</span></span></span><span style="top:0em;margin-left:0.05556em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span><span class="accent-body accent-vec"><span>⃗</span></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:0em;">​</span></span>​</span></span></span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathrm">2</span></span></span></span></p>
<p>Die Zugehörige <strong>Funktion</strong> sieht bisher so aus</p>
<pre><code class="language-cpp">std::vector&lt;double&gt; 
  diff_vec( std::vector&lt;double&gt;::iterator first1,
            std::vector&lt;double&gt;::iterator last1,
            std::vector&lt;double&gt;::iterator first2 )
{
  std::vector&lt;double&gt; result;
  while( first1 != last1 ) {
    result.push_back( (*first1) - (*first2) );
    ++first1; ++first2;
  }
  return std::move( result );
}
</code></pre>
<p>Jetzt ist mein erster Versuch eines <strong>Templates</strong> folgender</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
  std::vector&lt;double&gt;  diff_vec( T first1, T last1,
                                 T first2 )
{
  std::vector&lt;double&gt; result;
  while( first1 != last1 ) {
    result.push_back( (*first1) - (*first2) );
    ++first1; ++first2;
  } 
  return std::move( result );
}
</code></pre>
<p>Und jetzt Frage: Geht das noch abstrakter? Also dass ich den Container nicht angeben muss? Ich meine dasselbe würde doch auch mit <code>std::list</code> funktionieren. Es benötigt nur einen Random Access Iterator?</p>
<p>Viele Grüße,<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440521</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Sat, 31 Jan 2015 12:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 17:36:41 GMT]]></title><description><![CDATA[<p>Der verallgemeinerte Container ist ein Iterator.</p>
<pre><code class="language-cpp">template &lt;typename InputIter1, typename InputIter2, typename OutputIter&gt;
OutputIter diff_vec( InputIter1 first1, InputIter1 last1,
                     InputIter2 first2,
                     OutputIter out )
{
  while( first1 != last1 ) {
    *out = (*first1) - (*first2);
    ++first1; ++first2;
    ++out;
  }
  return out; // eigentlich egal, aber um konsistent zur STL zu sein.
}
</code></pre>
<p>In der inneren Schleife kannst du die Klammern um die Dereferenzierung weglassen, das sieht sonst so anfängerartig aus.</p>
<p>K&amp;R-Style:</p>
<pre><code class="language-cpp">while( first1 != last1 )
    *out++ = *first1++ - *first2++;
</code></pre>
<p>Würde ich hier sogar so machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440535</guid><dc:creator><![CDATA[raiter]]></dc:creator><pubDate>Fri, 30 Jan 2015 17:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 17:39:15 GMT]]></title><description><![CDATA[<p>Ach ja, aufrufen kannst du dann mit std::back_inserter.</p>
<pre><code class="language-cpp">auto v1 = std::array&lt;int, 3&gt;{1,2,3};
auto v2 = std::deque&lt;int&gt;{1,2,3};
auto v3 = std::list&lt;int&gt;();
diff_vec(v1.begin(), v1.end(), v2.begin(), std::back_inserter(v3));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2440537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440537</guid><dc:creator><![CDATA[raiter]]></dc:creator><pubDate>Fri, 30 Jan 2015 17:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 18:59:03 GMT]]></title><description><![CDATA[<pre><code>template &lt;typename InputIter1, typename InputIter2, typename OutputIter, typename Func&gt;
OutputIter diff_vec( InputIter1 first1, InputIter1 last1,
                     InputIter2 first2,
                     OutputIter out, Func func )
{
  while( first1 != last1 ) {
    *out = func(*first1, *first2);
    ++first1; ++first2;
    ++out;
  }
  return out; // eigentlich egal, aber um konsistent zur STL zu sein.
}
</code></pre>
<p>Die Differenz Operation kann man noch generisch machen.</p>
<p>Und dann fällt einem auf, dass es sowas shcon gibt in <a href="http://www.cplusplus.com/reference/numeric/" rel="nofollow">numeric</a>. Heisst zum Beispiel std::inner_product.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440549</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 30 Jan 2015 18:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 19:01:10 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Und dann fällt einem auf, dass es sowas shcon gibt in <a href="http://www.cplusplus.com/reference/numeric/" rel="nofollow">numeric</a>. Heisst zum Beispiel std::inner_product.</p>
</blockquote>
<p>inner_product kann das genauso gut wie std::for_each. Möglich mit Hacks, aber nicht dafür vorgesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440551</guid><dc:creator><![CDATA[shcon]]></dc:creator><pubDate>Fri, 30 Jan 2015 19:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 19:03:28 GMT]]></title><description><![CDATA[<p>Gibts nicht std::valarray für soetwas?<br />
Hab ich zwar noch nie verwendet und kenne auch keinen, ders getan hat, aber eigentlich ist es für soetwas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440552</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 30 Jan 2015 19:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 22:32:30 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Und dann fällt einem auf, dass es sowas shcon gibt in <a href="http://www.cplusplus.com/reference/numeric/" rel="nofollow">numeric</a>. Heisst zum Beispiel std::inner_product.</p>
</blockquote>
<p>inner_product erzeugt ein skalares T.<br />
Hier wäre ein ganz normales transform angebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440566</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 30 Jan 2015 22:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Fri, 30 Jan 2015 23:29:54 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ausgehend davon, dass mathematische Vektoren auch in C++ ihre Entsprechung mittels <code>std::vector</code> finden,</p>
</blockquote>
<p>Ich hau Dich mit dem Struppi.<br />
<a href="http://www.cplusplus.com/reference/valarray/valarray/operators/" rel="nofollow">http://www.cplusplus.com/reference/valarray/valarray/operators/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440572</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 30 Jan 2015 23:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Sat, 31 Jan 2015 12:48:19 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>vielen Dank für die regen Antworten. <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>
<p>raiter schrieb:</p>
<blockquote>
<p>In der inneren Schleife kannst du die Klammern um die Dereferenzierung weglassen, das sieht sonst so anfängerartig aus.</p>
</blockquote>
<p>Nun, ich habe mich an <a href="http://www.cplusplus.com/reference/numeric/inner_product/" rel="nofollow">dieser Notation</a> orientiert.</p>
<p>Nathan schrieb:</p>
<blockquote>
<p>Gibts nicht std::valarray für soetwas?<br />
Hab ich zwar noch nie verwendet und kenne auch keinen, ders getan hat, aber eigentlich ist es für soetwas.</p>
</blockquote>
<p>In der Tat. Dieses Argument ist natürlich unschlagbar. Ich weiß, dass ich mich damals gefragt hatte wozu diese Container benötigt werden und habe sie mental add acta gelegt. Hab ich mich selbst reingelegt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>volkard schrieb:</p>
<blockquote>
<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ausgehend davon, dass mathematische Vektoren auch in C++ ihre Entsprechung mittels <code>std::vector</code> finden,</p>
</blockquote>
<p>Ich hau Dich mit dem Struppi.<br />
<a href="http://www.cplusplus.com/reference/valarray/valarray/operators/" rel="nofollow">http://www.cplusplus.com/reference/valarray/valarray/operators/</a></p>
</blockquote>
<p>Diese Anspielung an Struppi verstehe ich nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Viele Grüße,<br />
Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440609</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Sat, 31 Jan 2015 12:48:19 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Sat, 31 Jan 2015 13:07:51 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ausgehend davon, dass mathematische Vektoren auch in C++ ihre Entsprechung mittels <code>std::vector</code> finden,</p>
</blockquote>
<p>Ich hau Dich mit dem Struppi.<br />
<a href="http://www.cplusplus.com/reference/valarray/valarray/operators/" rel="nofollow">http://www.cplusplus.com/reference/valarray/valarray/operators/</a></p>
</blockquote>
<p>Diese Anspielung an Struppi verstehe ich nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Damit wollte dir Volki sagen, daß du besser aufhörst neue Räder zu erfinden und lieber hingehst in den <a href="http://www.stroustrup.com/books.html" rel="nofollow">Struppi</a> liest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440617</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 31 Jan 2015 13:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Sat, 31 Jan 2015 13:11:04 GMT]]></title><description><![CDATA[<p>Klaus82 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Klaus82 schrieb:</p>
<blockquote>
<p>Ausgehend davon, dass mathematische Vektoren auch in C++ ihre Entsprechung mittels <code>std::vector</code> finden,</p>
</blockquote>
<p>Ich hau Dich mit dem Struppi.<br />
<a href="http://www.cplusplus.com/reference/valarray/valarray/operators/" rel="nofollow">http://www.cplusplus.com/reference/valarray/valarray/operators/</a></p>
</blockquote>
<p>Diese Anspielung an Struppi verstehe ich nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Meinte damit <a href="https://duckduckgo.com/?q=isbn+382731660X&amp;cppnetbooks" rel="nofollow">Die C++-Programmiersprache | ISBN: 382731660X</a>.</p>
<p>Wegen seiner Masse will man damit nicht gehauen werden. In dem steht sowas drin und es ist sehr wertvoll, ein dickes Buch zu haben, wo quasi alles kurz mal angesprochen wird. Leider muss man es mehrmals lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440619</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 31 Jan 2015 13:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Template: Differenzvektor on Sat, 31 Jan 2015 13:41:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Wegen seiner Masse will man damit nicht gehauen werden.</p>
</blockquote>
<p><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="😃"
    /> <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/2440624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440624</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 31 Jan 2015 13:41:48 GMT</pubDate></item></channel></rss>