<?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[Uebungen 9.12 - 9.14]]></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 habe aus meinem Buch zwei Aufgaben machen wollen, aber da ich leider keinen Kompiler habe, muss ich mich an euch wenden <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>Hier die zwei Aufgaben:</p>
<p>Aufgabe 1:</p>
<blockquote>
<p>Schreiben Sie eine Funktion, die ein Iteratorpaar und einen Integerwert erwartet. Suchen Sie im Bereich nach diesem Wert und geben Sie eine Boole'schen Wert zurueck, um anzuzeigen, ob Sie ihn gefunden haben oder nicht.</p>
</blockquote>
<p>Hier meine Loesung:</p>
<pre><code class="language-cpp">//include &amp; namespace...
bool searchInt(vector&lt;int&gt;::iterator beginx, vector&lt;int&gt;::iterator endx)
{
    vector&lt;int&gt; myWord(10);
    beginx = myWord.begin();
    endx = myWord.end();
    int word = 0;
    int zaehler = 0;
    for(int i = beginx; i != endx; ++i) //nur zum Zahlenerstellen ^^
    {
    myWord[i] = zaehler;
    ++zaehler;
    }
    //So vektor hat verschiedene Zahlen
    cout &lt;&lt; &quot;Wert suchen: &quot;;
    cin &gt;&gt; word;
    cout &lt;&lt; &quot;\n&quot;;
    for(int i = 0; i != word; ++i)
    {
    if(i == word)
    {
    cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl;
    return true;
    } else {
    cout &lt;&lt; &quot;Suche weiter ...&quot; &lt;&lt; endl;
    return false;
    }
}

int main()
{
    vector&lt;int&gt; myTest(10);
    vector&lt;int&gt;::iterator begg = myTest.begin();
    vector&lt;int&gt;::iterator endd = myTest.end();
    searchInt(begg, endd);
    return 0;
}
</code></pre>
<p>Aufgabe 2:</p>
<blockquote>
<p>Schreiben Sie mit Hilfe von Iteratoren ein Programm, das eine Folge von Strings von der Standardeingabe liest und in einen Vektor schreibt. Drucken Sie Elemente im Vektor aus.</p>
</blockquote>
<p>Loesung von mir:</p>
<pre><code class="language-cpp">int main()
{
    string word;
    bool schleife = false;
    vector&lt;string&gt; saver(10);
    vector&lt;string&gt;::iterator beg = saver.begin();
    vector&lt;string&gt;::iterator ed = saver.end();
    while(schleife != true)
{
    cout &lt;&lt; &quot;Wort eingeben: &quot;;
    cin &gt;&gt; word;
    cout &lt;&lt; &quot;\n&quot;;
    saver.push_back(word);
    if(word == &quot;adm&quot;)
{
    schleife = true;   
} else {
    continue;
} } 
    for(int i = beg; i != ed; ++i)
    {
    cout &lt;&lt; saver[i] &lt;&lt; endl;
    }
}
</code></pre>
<p>Ich wuerde mich freuen, wenn jemand von euch meine Loesungen korrigieren koennte(auf Fehler und bitte noch unbedingt auf die Logik und auf das was im Text steht, ob ich das richtig &quot;uebersetzt&quot; habe) - ohne auf die std:: zu schauen oder so,wenn keine da sind <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>Mit freundlichen Gruessen - Roland</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186610/uebungen-9-12-9-14</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 11:27:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186610.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Jul 2007 16:22:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Tue, 10 Jul 2007 16:22:59 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 habe aus meinem Buch zwei Aufgaben machen wollen, aber da ich leider keinen Kompiler habe, muss ich mich an euch wenden <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>Hier die zwei Aufgaben:</p>
<p>Aufgabe 1:</p>
<blockquote>
<p>Schreiben Sie eine Funktion, die ein Iteratorpaar und einen Integerwert erwartet. Suchen Sie im Bereich nach diesem Wert und geben Sie eine Boole'schen Wert zurueck, um anzuzeigen, ob Sie ihn gefunden haben oder nicht.</p>
</blockquote>
<p>Hier meine Loesung:</p>
<pre><code class="language-cpp">//include &amp; namespace...
bool searchInt(vector&lt;int&gt;::iterator beginx, vector&lt;int&gt;::iterator endx)
{
    vector&lt;int&gt; myWord(10);
    beginx = myWord.begin();
    endx = myWord.end();
    int word = 0;
    int zaehler = 0;
    for(int i = beginx; i != endx; ++i) //nur zum Zahlenerstellen ^^
    {
    myWord[i] = zaehler;
    ++zaehler;
    }
    //So vektor hat verschiedene Zahlen
    cout &lt;&lt; &quot;Wert suchen: &quot;;
    cin &gt;&gt; word;
    cout &lt;&lt; &quot;\n&quot;;
    for(int i = 0; i != word; ++i)
    {
    if(i == word)
    {
    cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl;
    return true;
    } else {
    cout &lt;&lt; &quot;Suche weiter ...&quot; &lt;&lt; endl;
    return false;
    }
}

int main()
{
    vector&lt;int&gt; myTest(10);
    vector&lt;int&gt;::iterator begg = myTest.begin();
    vector&lt;int&gt;::iterator endd = myTest.end();
    searchInt(begg, endd);
    return 0;
}
</code></pre>
<p>Aufgabe 2:</p>
<blockquote>
<p>Schreiben Sie mit Hilfe von Iteratoren ein Programm, das eine Folge von Strings von der Standardeingabe liest und in einen Vektor schreibt. Drucken Sie Elemente im Vektor aus.</p>
</blockquote>
<p>Loesung von mir:</p>
<pre><code class="language-cpp">int main()
{
    string word;
    bool schleife = false;
    vector&lt;string&gt; saver(10);
    vector&lt;string&gt;::iterator beg = saver.begin();
    vector&lt;string&gt;::iterator ed = saver.end();
    while(schleife != true)
{
    cout &lt;&lt; &quot;Wort eingeben: &quot;;
    cin &gt;&gt; word;
    cout &lt;&lt; &quot;\n&quot;;
    saver.push_back(word);
    if(word == &quot;adm&quot;)
{
    schleife = true;   
} else {
    continue;
} } 
    for(int i = beg; i != ed; ++i)
    {
    cout &lt;&lt; saver[i] &lt;&lt; endl;
    }
}
</code></pre>
<p>Ich wuerde mich freuen, wenn jemand von euch meine Loesungen korrigieren koennte(auf Fehler und bitte noch unbedingt auf die Logik und auf das was im Text steht, ob ich das richtig &quot;uebersetzt&quot; habe) - ohne auf die std:: zu schauen oder so,wenn keine da sind <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>Mit freundlichen Gruessen - Roland</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322488</guid><dc:creator><![CDATA[&amp;lt;wWw&amp;gt;]]></dc:creator><pubDate>Tue, 10 Jul 2007 16:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Tue, 10 Jul 2007 16:35:24 GMT]]></title><description><![CDATA[<p>zu aufgabe 9.12:</p>
<pre><code class="language-cpp">// wo ist der integerwert (Parameter),nach dem du suchen musst?
//include &amp; namespace... 
bool searchInt(vector&lt;int&gt;::iterator beginx, vector&lt;int&gt;::iterator endx, /* INTERGERPARAMETER*/) 
{ 
    //Warum legst du ein neuen vetor an? 
    /*vector&lt;int&gt; myWord(10); 
    beginx = myWord.begin(); 
    endx = myWord.end();   */

    int word = 0; 
    int zaehler = 0; 
   /* for(int i = beginx; i != endx; ++i) //nur zum Zahlenerstellen ^^ 
    {*/ 

    for(;beginx != endx; beginx++){
    int iValue=(*beginx); //Value musst du mit dem INtergerparameter vergleichen wenn gefudnen wurde dann true zurückgeben
   // }

    myWord[i] = zaehler; 
    ++zaehler; 
    } 
    //So vektor hat verschiedene Zahlen 
    cout &lt;&lt; &quot;Wert suchen: &quot;; 
    cin &gt;&gt; word; 
    cout &lt;&lt; &quot;\n&quot;; 
    for(int i = 0; i != word; ++i) 
    { 
    if(i == word) 
    { 
    cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl; 
    return true; 
    } else { 
    cout &lt;&lt; &quot;Suche weiter ...&quot; &lt;&lt; endl; 
    return false; 
    } 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1322499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322499</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 10 Jul 2007 16:35:24 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Tue, 10 Jul 2007 16:57:52 GMT]]></title><description><![CDATA[<p>9.12</p>
<pre><code class="language-cpp">//include &amp; namespace...
bool searchInt(vector&lt;int&gt;::iterator beginx, vector&lt;int&gt;::iterator endx)
{
/*    vector&lt;int&gt; myWord(10);
    beginx = myWord.begin();
    endx = myWord.end();
    int word = 0;
    int zaehler = 0;
    for(int i = beginx; i != endx; ++i) //nur zum Zahlenerstellen ^^
    {
    myWord[i] = zaehler;
    ++zaehler;
    }
sinn?
*/
    //So vektor hat verschiedene Zahlen
    cout &lt;&lt; &quot;Wert suchen: &quot;;
    cin &gt;&gt; word; //schoener waere es, den wert an die funktion zu uebergeben
//und ihn in main() vom benutzer auszulesen
    cout &lt;&lt; &quot;\n&quot;;
    for(int i = 0; i != word; ++i)
//problem: was wenn word nicht in dem vector vorhanden ist?
    {
    if(i == word)
    {
    cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl;
    return true;
    } else {
    cout &lt;&lt; &quot;Suche weiter ...&quot; &lt;&lt; endl;
    return false;
    }
}

int main()
{
    vector&lt;int&gt; myTest(10); //vielleicht irgendwann zahlen einfuegen?
    vector&lt;int&gt;::iterator begg = myTest.begin();
    vector&lt;int&gt;::iterator endd = myTest.end();
    searchInt(begg, endd);
    return 0;
}
</code></pre>
<p>9.14</p>
<pre><code class="language-cpp">int main()
{
    string word;
    bool schleife = false;
    vector&lt;string&gt; saver(10);
    vector&lt;string&gt;::iterator beg = saver.begin();
    vector&lt;string&gt;::iterator ed = saver.end();
    while(schleife != true)
{
    cout &lt;&lt; &quot;Wort eingeben: &quot;;
    cin &gt;&gt; word;
    cout &lt;&lt; &quot;\n&quot;;
    saver.push_back(word);
    if(word == &quot;adm&quot;)
{
    schleife = true; //einfach break; schreiben
} else {
    continue; //unnoetig, schleife wird hier so oder so &quot;continued&quot;
} } 
    for(int i = beg; i != ed; ++i)
    {
    cout &lt;&lt; saver[i] &lt;&lt; endl;
    }
}
</code></pre>
<p>Was ich oben nicht angemerkt habe: deine Schleifen sind falsch.</p>
<p>Eine Schleife mit iteratoren sieht so aus:</p>
<pre><code class="language-cpp">for(iterator i=begin; i!=end; ++i) {
  //code
}
</code></pre>
<p>Du kannst iteratoren nicht auf indizes umwandeln (zumindest nicht immer und es ist nicht sinnvoll).</p>
<p>Ich denke die Uebungsaufgaben sollten dir Iteratoren naeher bringen und ich fuerchte da bist du daran vorbeigeschossen. Lies dir am besten nochmal die Infos die du ueber Iteratoren hast durch - es ist schwer dir zu erklaeren was sie genau machen ohne zu wissen wo dein verstaendnisproblem liegt.</p>
<p>Deshalb nur eine kleine Allgemeine Information:</p>
<p>Iteratoren sind Zeiger in einen Container (zB vector). Sie verweisen auf 1 Element. Generell verhalten sie sich wie Zeiger. Das interessanteste ist der end-iterator der hinter das letzte element zeigt und so das ende einer sequenz angibt.</p>
<p>der &quot;trick&quot; dabei, warum iteratoren cool sind ist folgender:</p>
<pre><code class="language-cpp">vector&lt;int&gt; vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
</code></pre>
<p>wenn ich nun nur in einer haelfte des vectors suchen will, mache ich einfach:</p>
<pre><code class="language-cpp">searchInt(vec.begin(), vec.begin()+2);
</code></pre>
<p>Ein iteratoren-paar stellt also eine sequenz innerhalb eines containers da.</p>
<p>Naja, vielleicht keine so gute erklaerung. versuch am besten dir klar zu werden was du nicht genau verstehst und frag uns dann konkret.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322519</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 10 Jul 2007 16:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Tue, 10 Jul 2007 19:25:05 GMT]]></title><description><![CDATA[<p>Guten Abend <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>Danke erstmals fuer eure Antworten, das hat mich weitergebracht.<br />
Doch bevor ich mir die Loesungen genauer anschaue(hab sie mir nur so ganz schnell durchschaut, um selber nachzudenken, was ich falsch gemacht hab^^)</p>
<p>Hier mein neuer Code zu dem ersten Beispiel:</p>
<pre><code class="language-cpp">bool SearchInt(vector&lt;int&gt;::iterator beginx, vector&lt;int&gt;::iterator endx, int wert)
{
for(; beginx != endx; ++beginx)
{
if(beginx == wert)
{  cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl; return true; 
} else { 
cout &lt;&lt; &quot;Nicht Gefunden, suche Weiter ...&quot; &lt;&lt; endl; return false; 
}
}
}

int main()
{
vector&lt;int&gt;::iterator Foo(10);
vector&lt;int&gt;::iterator beginx = Foo.begin(), endx = Foo.end();
int zahl = 0;
cout &lt;&lt; &quot;Wert suchen: &quot;;
cin &gt;&gt; zahl;
cout &lt;&lt; &quot;\n&quot;;
SearchInt(beginx, endx, zahl)
return 0;
}
</code></pre>
<p>Keine grosse Ahnung ob es nun stimmt, aber auf jeden Fall schau ich mir jetzt gleich die Loesungen an <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="😉"
    /><br />
Wenn es geht, kontrolliert bitte nur noch das hier.</p>
<p>Mit freundlichen Gruessen - Roland</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322601</guid><dc:creator><![CDATA[&amp;lt;wWw&amp;gt;]]></dc:creator><pubDate>Tue, 10 Jul 2007 19:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Tue, 10 Jul 2007 19:56:43 GMT]]></title><description><![CDATA[<p>Eine Kleinigkeit noch:</p>
<ol>
<li>
<p>du hast noch immer keine Werte in den vector gepackt. Fuell den mal mit werten - kann man mit der anderen Aufgabe ja verbinden: zB werte vom user einlesen lassen.</p>
</li>
<li>
<p>denk ueber deine suchschleife nochmal nach:<br />
der Kopf der Schleife ist korrekt, aber der Rest...</p>
</li>
</ol>
<p>Du vergleichst ob beginx gleich wert ist (btw, es muss *beginx==wert heissen, da man mit * den wert anspricht auf den beginx verweist) aber was wenn *beginx nicht == wert ist? dann sagst du: nicht gefunden und beendest die funktion. Du kannst aber erst wissen ob wert in dem vector vorkommt wenn du dir alle elemente des vectors angesehen hast, sprich: wenn die schleife zuende ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322615</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 10 Jul 2007 19:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Tue, 10 Jul 2007 21:57:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;vector&gt;

template&lt; typename T &gt;
bool is_contained_in( std::vector&lt; T &gt;::iterator begin, std::vector&lt; T &gt;::iterator end, T value ) {

    while( begin != end ) {

        if( *begin == value ) {

            return true;
        }

        ++begin;
    }

    return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1322667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322667</guid><dc:creator><![CDATA[...so vielleicht]]></dc:creator><pubDate>Tue, 10 Jul 2007 21:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 03:46:15 GMT]]></title><description><![CDATA[<p>oder so:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

template&lt; typename T &gt;
bool is_contained_in( std::vector&lt; T &gt;::iterator begin, std::vector&lt; T &gt;::iterator end, T value ) {

for(;begin!=end; begin++)
    if( *begin == value ) 
       return true;
   return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1322702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322702</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 11 Jul 2007 03:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 05:20:13 GMT]]></title><description><![CDATA[<p>und jetzt ruf ich eure template funktion mit einem double auf. mal ganz davon abgesehen, dass das nicht der geforderten spezifikation &quot;Integer wert&quot; entspricht, wirft der compiler bei double kein warning wegen verlustbehafteter konvertierung aus (was er bei strikter implementierung mit int als parameter täte) und == schlägt mitunter fehl.</p>
<p>woah, soviele vertipper auf einmal Oo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322714</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 11 Jul 2007 05:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 09:49:25 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>Danke euch fuer eure Antworten und Tipps.</p>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<ol>
<li>du hast noch immer keine Werte in den vector gepackt. Fuell den mal mit werten - kann man mit der anderen Aufgabe ja verbinden: zB werte vom user einlesen lassen.</li>
</ol>
</blockquote>
<p>Uh... ich habs mir extra auf einen Zettel aufgeschrieben, um es von dort aus abzutippen, aber hab es ausgelassen, danke jedenfalls <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>Shade Of Mine schrieb:</p>
<blockquote>
<ol start="2">
<li>denk ueber deine suchschleife nochmal nach:<br />
der Kopf der Schleife ist korrekt, aber der Rest...</li>
</ol>
<p>Du vergleichst ob beginx gleich wert ist (btw, es muss *beginx==wert heissen, da man mit * den wert anspricht auf den beginx verweist) aber was wenn *beginx nicht == wert ist? dann sagst du: nicht gefunden und beendest die funktion. Du kannst aber erst wissen ob wert in dem vector vorkommt wenn du dir alle elemente des vectors angesehen hast, sprich: wenn die schleife zuende ist.</p>
</blockquote>
<p>Ja, das mit <strong>return false;</strong> bzw. ueberhaupt mit dem Beenden der Schleife war ein Fehler, den ich sehr oft mache ..<br />
Aber eigentlich braeuchte ich auch nur eine If Anweisung ohne Else zu packen, dann wuerde das ja auch ausreichen.</p>
<p>Waehrend ihr meine Beispiele verbessert habt, hab ich in der Zeit weitergelernt und da sind noch solche Beispiele:</p>
<p>Beispiel 9.20:</p>
<blockquote>
<p>Schreiben Sie ein Programm, das die Elemente eines Vektors aus Integerwerten mit den Elementen einer Liste aus Integerwerten auf Gleichheit ueberprueft.</p>
</blockquote>
<p>Mein Code:</p>
<pre><code class="language-cpp">vector&lt;int&gt; xvec(10, 5);
list&lt;int&gt; xlist(10, 5);
if (xvec == xlist)
{
cout &lt;&lt; &quot;True&quot; &lt;&lt; endl;
} else {
cout &lt;&lt; &quot;False&quot; &lt;&lt; endl;
}
</code></pre>
<p>Uebung 9.22:</p>
<blockquote>
<p>Gegeben ist vec, das 25Elemente enthaelt. Welche Auswirkung hat der Befehl <strong>vec.resize(100)</strong>? Was passiert, wenn wir als naechstes den Befehl <strong>vec.resize(10)</strong> ausfuehren wuerden?</p>
</blockquote>
<p>Mein Code:</p>
<pre><code class="language-cpp">vector&lt;int&gt; vec(25, 3); //25 Elemente mit dem Wert(nur so als Beispiel:) 3
vec.resize(100); // Hier kommen 75Elemente mit Wert 0 dazu
vec.resize(10); // vec hat 10Elemente mit dem Wert 3
</code></pre>
<p>Ich hab eigentlich nur die Beispiele genommen, die ich halbwegs verstehe.<br />
Ansonsten ist alles gut erklaert.</p>
<p>Mit freundlichen Gruessen - Roland</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322881</guid><dc:creator><![CDATA[&amp;lt;wWw&amp;gt;]]></dc:creator><pubDate>Wed, 11 Jul 2007 09:49:25 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:12:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">vector&lt;int&gt; vec(25, 3); //25 Elemente mit dem Wert(nur so als Beispiel:) 3
vec.resize(100); // Hier kommen 75Elemente mit Wert 0 dazu
vec.resize(10); // vec hat immer noch 100 Elemente
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1322896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322896</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:12:35 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:13:49 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vector&lt;int&gt; vec(25, 3); //25 Elemente mit dem Wert(nur so als Beispiel:) 3
vec.resize(100); // Hier kommen 75Elemente mit Wert 0 dazu
vec.resize(10); // vec hat immer noch 100 Elemente
</code></pre>
</blockquote>
<p>hallo,</p>
<p>wieso denn das eigentlich?<br />
mit resize mach ich ja eine neue Elementanzahl <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>Roland</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322902</guid><dc:creator><![CDATA[&amp;lt;wWw&amp;gt;]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:16:59 GMT]]></title><description><![CDATA[<p>Ne, es werden keine Elemente aus dem Vektor entfernt sondern nur der end-iterator neu gesetzt. Kannst du mit vec.capacity() überprüfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322907</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:18:39 GMT]]></title><description><![CDATA[<p>klar werden die elemente entfernt. vielleicht nicht physisch, aber logisch. size liefert die anzahl der elemente im vector, nicht capacity.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322911</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:19:19 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>klar werden die elemente entfernt. vielleicht nicht physisch, aber logisch. size liefert die anzahl der elemente im vector, nicht capacity.</p>
</blockquote>
<p>Ja das ist es ja aber. <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="🙂"
    /> Physisch sind die Elemente noch da und über operator[] kannst du sogar noch reinschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322912</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:34:35 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>thordk schrieb:</p>
<blockquote>
<p>klar werden die elemente entfernt. vielleicht nicht physisch, aber logisch. size liefert die anzahl der elemente im vector, nicht capacity.</p>
</blockquote>
<p>Ja das ist es ja aber. <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="🙂"
    /> Physisch sind die Elemente noch da und über operator[] kannst du sogar noch reinschreiben.</p>
</blockquote>
<p>weil [] keinerlei kontrolle unternimmt, ob du auf gültigen speicherbereich zugreifst oder nicht. greif mal mit vector#at(int) drauf zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322934</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:37:41 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Physisch sind die Elemente noch da und über operator[] kannst du sogar noch reinschreiben.</p>
</blockquote>
<p>?</p>
<p>Ich würde mal sagen nach einem resize(size) auf ne kleinere Größe werden alle Elemente nach size gelöscht. Der Speicher für diese Elemente ist natürlich noch da.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322937</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:37:41 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:37:55 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>David_pb schrieb:</p>
<blockquote>
<p>thordk schrieb:</p>
<blockquote>
<p>klar werden die elemente entfernt. vielleicht nicht physisch, aber logisch. size liefert die anzahl der elemente im vector, nicht capacity.</p>
</blockquote>
<p>Ja das ist es ja aber. <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="🙂"
    /> Physisch sind die Elemente noch da und über operator[] kannst du sogar noch reinschreiben.</p>
</blockquote>
<p>weil [] keinerlei kontrolle unternimmt, ob du auf gültigen speicherbereich zugreifst oder nicht. greif mal mit vector#at(int) drauf zu.</p>
</blockquote>
<p>Genau so ist das. Aber da der Speicher noch vorhanden ist, ist es auch nicht &quot;illegal&quot; über auf Elemente über begin()+size() zu schreiben. Die Elemente sind ja noch vorhanden!<br />
Wenn du die Größe des vectors genau anpassen willst kannst du das wie folgt machen:</p>
<pre><code class="language-cpp">std::vector&lt; int &gt;( vec ).swap( vec );
</code></pre>
<p>Dann hast du ganz genau so viel Elemente wie size() zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322938</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:37:55 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:38:52 GMT]]></title><description><![CDATA[<p>Ich würde sagen ein Zugriff auf einen Index ausserhalb 0 &lt;= x &lt; size() ist schlichtweg undefiniert. Da ist vollkommen egal was capacity() aussagt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322940</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:43:22 GMT]]></title><description><![CDATA[<p>es ist auch nicht &quot;illegal&quot; sowas zu machen:</p>
<pre><code class="language-cpp">int *p;
*p = 23;
</code></pre>
<p>in 9 von 10 fällen geht sowas sogar gut, weil der pointer zufällig auf irgendnen bereich verweist, auf den keine ocke anspruch erhebt. aber beim 10. mal krachts.</p>
<p>wenn ich nen vector resize und dann auf bereiche zugreife, die &quot;hinter&quot; dem letzten element liege, dann hat das dieselben auswirken. es mag in 9 von 10 fällen gut gehen, aber im 10. fall hat sich deine vector implementierung dafür entschieden, genau in den bereich seine capacity zu schreiben und wo ursprünglich eine 12 stand, bretzelst du ihm ne 723.399 hin.. ups.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322947</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:50:25 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>wenn ich nen vector resize und dann auf bereiche zugreife, die &quot;hinter&quot; dem letzten element liege, dann hat das dieselben auswirken. es mag in 9 von 10 fällen gut gehen, aber im 10. fall hat sich deine vector implementierung dafür entschieden, genau in den bereich seine capacity zu schreiben und wo ursprünglich eine 12 stand, bretzelst du ihm ne 723.399 hin.. ups.</p>
</blockquote>
<p>Sicher?</p>
<p>Standard schrieb:</p>
<blockquote>
<p>-4- Complexity: The destructor of T is called the number of times equal to the number of the elements erased, but the assignment operator of T is called the number of times equal to the number of elements in the vector after the erased elements.</p>
</blockquote>
<p>Ich seh hier nirgends etwas das der Speicher freigegeben werden muss. Darum sollte es zu 100% sicher sein über begin()+size() zu schreiben. Man schreibt ja nicht über den reservierten Speicherbereich hinaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322955</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:54:31 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Ich seh hier nirgends etwas das der Speicher freigegeben werden muss. Darum sollte es zu 100% sicher sein über begin()+size() zu schreiben. Man schreibt ja nicht über den reservierten Speicherbereich hinaus.</p>
</blockquote>
<p>da steht auch nicht, dass er es nicht muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322957</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:54:31 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 10:55:43 GMT]]></title><description><![CDATA[<p>was der standard (bzw. die spezifikation) nicht ausdrücklich definiert, ist undefiniert. solange im standard weder steht, dass der speicher ausdrücklich freigegeben werden muss oder ausdrücklich reserviert bleiben muss, ist es einer implementierung frei überlassen, wie sie das umsetzt. die meisten werden bei so einer lockeren definition darauf verzichten, den speicher explizit freizugeben, aber eine andere macht es womöglich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322959</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 11 Jul 2007 10:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 11:09:44 GMT]]></title><description><![CDATA[<p>Klar, aber eine Freigabe würde die Kompexität der Funktion verändern. Und die scheint ja vorgegeben zu sein. Naja, ein guter Gedanke sowas zu tun ist es trotzdem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1322967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1322967</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 11:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 11:31:28 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Klar, aber eine Freigabe würde die Kompexität der Funktion verändern. Und die scheint ja vorgegeben zu sein. Naja, ein guter Gedanke sowas zu tun ist es trotzdem nicht.</p>
</blockquote>
<p>es ist ein gedanke, den man gar nicht erst fassen sollte, weil er schlicht zu fehlerhaftem code führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323001</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 11 Jul 2007 11:31:28 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 11:33:27 GMT]]></title><description><![CDATA[<p>Mag sein, aber kannst du das auch belegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323003</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 11 Jul 2007 11:33:27 GMT</pubDate></item><item><title><![CDATA[Reply to Uebungen 9.12 - 9.14 on Wed, 11 Jul 2007 11:34:37 GMT]]></title><description><![CDATA[<p>und am ende ist noch zu beachten, dass der vector theoretisch den freien arrayplatz nutzen kann wie er lustig ist, zb zum speicherblockverschieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323005</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Wed, 11 Jul 2007 11:34:37 GMT</pubDate></item></channel></rss>