<?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[[Gelöst] Iteratorarithmetik]]></title><description><![CDATA[<p>Hallo <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>Ich hätte da eine Frage bezüglich Iteratorarithmetik.</p>
<p>Im (C++ Primer Übung 3.22) heisst es:</p>
<blockquote>
<p><em>Was geschieht, wenn wir <strong>mid</strong> folgendermassen berechnen:</em></p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator mid = (vi.begin() + vi.end()) / 2;
</code></pre>
</blockquote>
<p>Ich habe einen Vektor mit 9 Elementen erstellt und verschiedene Versuche durchgeführt einem Iterator solch einen Wert durch so eine arithmetische Operation zu vergeben, aber der Compiler gibt da eine sehr lange Fehlermeldung raus. (...error: no math for 'operator+'...).</p>
<p>Andere Operationen wie (vi.begin()+2, vi.end()-4...) funktionieren sehr gut.</p>
<p>Ist es normal dass das so überhaupt nicht funktioniert, oder mache ich da etwas falsch.</p>
<p>Wäre sehr dankbar wen mir jemand da helfen kann <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>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293920/gelöst-iteratorarithmetik</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 04:01:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293920.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Oct 2011 14:45:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] Iteratorarithmetik on Thu, 13 Oct 2011 15:41:35 GMT]]></title><description><![CDATA[<p>Hallo <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>Ich hätte da eine Frage bezüglich Iteratorarithmetik.</p>
<p>Im (C++ Primer Übung 3.22) heisst es:</p>
<blockquote>
<p><em>Was geschieht, wenn wir <strong>mid</strong> folgendermassen berechnen:</em></p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator mid = (vi.begin() + vi.end()) / 2;
</code></pre>
</blockquote>
<p>Ich habe einen Vektor mit 9 Elementen erstellt und verschiedene Versuche durchgeführt einem Iterator solch einen Wert durch so eine arithmetische Operation zu vergeben, aber der Compiler gibt da eine sehr lange Fehlermeldung raus. (...error: no math for 'operator+'...).</p>
<p>Andere Operationen wie (vi.begin()+2, vi.end()-4...) funktionieren sehr gut.</p>
<p>Ist es normal dass das so überhaupt nicht funktioniert, oder mache ich da etwas falsch.</p>
<p>Wäre sehr dankbar wen mir jemand da helfen kann <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>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2130996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2130996</guid><dc:creator><![CDATA[arb3r]]></dc:creator><pubDate>Thu, 13 Oct 2011 15:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Iteratorarithmetik on Thu, 13 Oct 2011 15:04:08 GMT]]></title><description><![CDATA[<p>Du kannst Iteratoren und Zeiger nicht dividieren.</p>
<p>Einen Iterator in die Mitte kriegst du mit:</p>
<pre><code class="language-cpp">vi.begin() + vi.size() / 2;
</code></pre>
<p>Und das ist wiederum äquivalent mit:</p>
<pre><code class="language-cpp">vi.begin() + (vi.end() - vi.begin()) / 2;
</code></pre>
<p>Du darfst aber 1/2 nicht ausklammern, weil du nur Differenzen (ganze Zahlen als relative Offsets), aber keine Iteratoren (absolute Positionen) multiplizieren und dividieren kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131004</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 13 Oct 2011 15:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Iteratorarithmetik on Thu, 13 Oct 2011 15:05:42 GMT]]></title><description><![CDATA[<p>Eigentlich ist das normal, dass das nicht funktioniert. Die Summe von zwei Iteratoren kann nichts sinnvolles sein, daher gibt es auch kein + dafür. Genauso wie es kein geteilt gibt. Kann es sein, dass das genau der Punkte ist, den der Primer an der Stelle machen will?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131007</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 13 Oct 2011 15:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Iteratorarithmetik on Thu, 13 Oct 2011 15:41:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a><br />
Das mit dem Iterator in der Mitte ist im Buch auch so beschreiben.<br />
Aber jezt ist mir klar, dass das andere nicht funktionieren kann.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a><br />
Hmm... im Buch endet zwar der Abschnitt Iteratorarithmetik mit dieser Übung, aber ja es ist gut denkbar das C++ Primer auf diesen Punkt hinweisen möchte.</p>
<p>Vielen Dank für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131028</guid><dc:creator><![CDATA[arb3r]]></dc:creator><pubDate>Thu, 13 Oct 2011 15:41:06 GMT</pubDate></item></channel></rss>