<?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[alphabetisches Sortieren von Wörtern]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>Ich habe versucht ein Programm zu schreiben, welches eine gewünschte Anzahl von Wörtern einliest und anschliessend alphabetisch sortiert (mit bubblesort) wieder ausgibt. Das kompilieren läuft fehlerfrei durch, es tritt jedoch dann ein Laufzeitfehler auf..<br />
Hier der Code:</p>
<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

int main()
{
    int number;

    cout &lt;&lt; &quot;Anz. Woerter: &quot;;
    cin &gt;&gt; number;

    string* words = new string[number];

    int k = 1;
    while(k&lt;=number)
    {
        cout &lt;&lt; &quot;Wort &quot; &lt;&lt; k &lt;&lt; &quot;: &quot;;
        cin &gt;&gt; words[k-1];
        k++;
    }

    for(int i = number; i&gt;0; i--) //bubblesort
    {
        for(int j=0; j&lt;i; j++)
        {
            if(words[j][0] &gt; words[j+1][0])  //Erste buchstaben vergleichen
            {
                string tmp = words[j+1];
                words[j+1] = words[j];
                words[j] = tmp;

            }
        }
    }

    for(int i=0; i&lt;number; i++)
    {
        cout &lt;&lt; words[i] &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Wäre cool, wenn sich das jemand kurz anschauen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313001/alphabetisches-sortieren-von-wörtern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 08:35:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313001.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Jan 2013 12:43:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 12:43:55 GMT]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>Ich habe versucht ein Programm zu schreiben, welches eine gewünschte Anzahl von Wörtern einliest und anschliessend alphabetisch sortiert (mit bubblesort) wieder ausgibt. Das kompilieren läuft fehlerfrei durch, es tritt jedoch dann ein Laufzeitfehler auf..<br />
Hier der Code:</p>
<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

int main()
{
    int number;

    cout &lt;&lt; &quot;Anz. Woerter: &quot;;
    cin &gt;&gt; number;

    string* words = new string[number];

    int k = 1;
    while(k&lt;=number)
    {
        cout &lt;&lt; &quot;Wort &quot; &lt;&lt; k &lt;&lt; &quot;: &quot;;
        cin &gt;&gt; words[k-1];
        k++;
    }

    for(int i = number; i&gt;0; i--) //bubblesort
    {
        for(int j=0; j&lt;i; j++)
        {
            if(words[j][0] &gt; words[j+1][0])  //Erste buchstaben vergleichen
            {
                string tmp = words[j+1];
                words[j+1] = words[j];
                words[j] = tmp;

            }
        }
    }

    for(int i=0; i&lt;number; i++)
    {
        cout &lt;&lt; words[i] &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Wäre cool, wenn sich das jemand kurz anschauen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291276</guid><dc:creator><![CDATA[kaenzign]]></dc:creator><pubDate>Sat, 19 Jan 2013 12:43:55 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 13:00:08 GMT]]></title><description><![CDATA[<pre><code>for(int i = number; i&gt;0; i--) //bubblesort
    {
        for(int j=0; j&lt;i; j++)
        {
            if(words[j][0] &gt; words[j+1][0])  //Erste buchstaben vergleichen
            {
                string tmp = words[j+1];
                words[j+1] = words[j];
                words[j] = tmp;

            }
        }
    }
</code></pre>
<p>Der Fehler liegt in deinem Bubblesort. Du setzt i = number, dann lässt zu j bis number - 1 laufen, addierst dann aber nochmal 1 drauf.<br />
Problem ist aber, dass dein größter Index für words &quot;number - 1&quot; ist.</p>
<pre><code>for(int i = number - 1; i&gt;0; i--) //bubblesort
</code></pre>
<p>löst das Problem <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2291282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291282</guid><dc:creator><![CDATA[GER_Moki]]></dc:creator><pubDate>Sat, 19 Jan 2013 13:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 13:17:53 GMT]]></title><description><![CDATA[<p>Ah wie blöd von mir <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="🙂"
    /> Danke dir vielmals.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291293</guid><dc:creator><![CDATA[kaenzign]]></dc:creator><pubDate>Sat, 19 Jan 2013 13:17:53 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 14:03:01 GMT]]></title><description><![CDATA[<p>kaenzign schrieb:</p>
<blockquote>
<p>Ah wie blöd von mir <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="🙂"
    /> Danke dir vielmals.</p>
</blockquote>
<p>Noch ein paar Denkanstöße für dich:</p>
<pre><code>#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;

int main()
{
	unsigned number; // Eine Anzahl ist natürlich immer nicht-negativ.
    std::cout &lt;&lt; &quot;Anz. Woerter: &quot;;
    std::cin &gt;&gt; number;

	std::vector&lt;std::string&gt; words; // Steht die Größe eines Arrays erst zur Laufzeit fest, nimmst du std::vector (dyn. Array).

	for(unsigned i=0; i!=number; ++i) // Hier nimmst du eine for Schleife... du weißt ja im Voraus, wie oft sie durchläuft...
	{
		std::string str;
		std::cout &lt;&lt; &quot;Wort &quot; &lt;&lt; i+1 &lt;&lt; &quot;: &quot;;
        std::cin &gt;&gt; str;
		words.push_back(str);
	}

	std::sort( words.begin(), words.end() ); // Ok du willst Bubblesort machen :). Zur Übung ok, aber vergiss nicht. Man erfindet das Rad nicht immer neu.

	for(std::vector&lt;std::string&gt;::iterator it=words.begin(); it!=words.end(); ++it)
		std::cout &lt;&lt; *it &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2291308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291308</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 19 Jan 2013 14:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 14:22:08 GMT]]></title><description><![CDATA[<p>Wenn du ein set statt vector benutzt kannst du dir sogar noch das Sortieren komplett sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291311</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Sat, 19 Jan 2013 14:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 14:28:46 GMT]]></title><description><![CDATA[<p>nwp3 schrieb:</p>
<blockquote>
<p>Wenn du ein set statt vector benutzt kannst du dir sogar noch das Sortieren komplett sparen.</p>
</blockquote>
<p>Nicht nur ist es langsamer, es löscht auch doppelte Einträge. Wenn das Programm das gleiche machen soll, müsstest du multiset vorschlagen (ist halt immer noch Overkill und langsamer).</p>
<p>Wie das mit unordered_multiset aussieht, weiss ich nicht, das müsste man ev. testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291313</guid><dc:creator><![CDATA[setfürnschrott]]></dc:creator><pubDate>Sat, 19 Jan 2013 14:28:46 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 14:54:14 GMT]]></title><description><![CDATA[<p>@out<br />
Danke dir vielmals für die Anregungen, weiss ich sehr zu schätzen.</p>
<p>Warum ist hier ein vector dem dynamischen array vorzuziehen?<br />
Habe gehört, dass die Arbeit mit Vektoren weniger &quot;fehleranfällig&quot; sei.<br />
Inwiefiern stimmt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291330</guid><dc:creator><![CDATA[kaenzign]]></dc:creator><pubDate>Sat, 19 Jan 2013 14:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 14:57:00 GMT]]></title><description><![CDATA[<p>Ja, die ist weniger Speicher anfällig, weil der Speicher des dynamisch allozierten Arrays automatisch gelöscht wird (keine Speicherlecks mehr).<br />
Außerdem ist es praktischer, da die Größe des Arrays unter Umständen auch vergrößert werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291332</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 14:57:00 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 15:27:42 GMT]]></title><description><![CDATA[<p>kaenzign schrieb:</p>
<blockquote>
<p>Warum ist hier ein vector dem dynamischen array vorzuziehen?<br />
Habe gehört, dass die Arbeit mit Vektoren weniger &quot;fehleranfällig&quot; sei.<br />
Inwiefiern stimmt das?</p>
</blockquote>
<p>Nein das hast du falsch verstanden. Ein std::vector IST ein dynamisches Array. D.h. wenn du ein dynamisches Array benötigst, nimmst du std::vector. Oh ja, es ist um einiges weniger fehleranfälliger und hat noch andere Vorteile, z.B. kannst du einfach die Größe abfagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291338</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 19 Jan 2013 15:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 15:32:14 GMT]]></title><description><![CDATA[<p>Achso, jetzt habe ich dich glaub falsch verstanden. Ein std::vector ist deinem dyn. Array vorzuziehen, weil<br />
- du musst kein delete[] machen, was oft vergessen wird.</p>
<p>- du hast range-checks in debug-builds. D.h. vector[88] gibt ein Fehler zur Laufzeit, wenn der Index zu groß ist.</p>
<p>- du die Größe mit size abfragen kannst.</p>
<p>- du kein array-to-pointer-decay mehr hast. D.h. wenn du dein Array an eine Funktion übergibst, zefällt dieses in einen Zeiger auf das erste Element. Bei einem std::vector hast du das Problem nicht.</p>
<p>- du Kopiersemantik hast. Einen std::vector kannst du kopieren, ein Array nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291340</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 19 Jan 2013 15:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 17:06:48 GMT]]></title><description><![CDATA[<p>Vielen Dank für die überzeugenden Argumente zur vector Klasse. Inspiriert davon habe ich mich gleich an die Arbeit gemacht und meinen vorherigen Code etwas abgeändert.<br />
Allerdings soll das Programm jetzt nicht mehr Wörter sortieren, sondern eine Liste von Zahlen aus einem .txt-file auslesen, in einen Vektor schreiben, nach Grösse sortieren und anschliessend wieder ausgeben. Die Zahlen im .txt-file sind zeilenweise aufgelistet, bzw. eine Zahl pro Zeile)</p>
<p>Das Problem ist aber, dass scheinbar die backslash-characters auch irgendwie eingelesen werden, sprich lese ich eine liste mit 8 Zahlen ein gibt mir das Programm nur 4 Zahlen aus. (die backslashs werden aber wies aussieht nicht ausgegeben) Wie kann ich das Problem umgehen?</p>
<p>Hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;stdlib.h&gt;
#include &lt;string&gt;
using namespace std;

void sortE(vector&lt;int&gt;&amp; arr, int length);

int main()
{
    unsigned int lines = 0;
    ifstream fin;
    fin.open(&quot;data.txt&quot;);

while(!fin.eof())  //Anzahl Zeilen/bzw.Zahlen zählen
{
    string str;
    getline(fin,str);
    lines++;
}

fin.seekg(0,ios::beg); //Get-Pointer zurücksetzen

vector&lt;int&gt; liste;

    for(unsigned int i = 0; i!=lines; i++) //einlesen?????
    {
        int tmp;
        fin &gt;&gt; tmp;
        liste.push_back(tmp);
        i++;
    }

    sortE(liste, lines);

    for(vector&lt;int&gt;::iterator it = liste.begin(); it!=liste.end(); it++) //Ausgabe
    {
        cout &lt;&lt; *it &lt;&lt; endl;
    }

    return 0;
}

void sortE(vector&lt;int&gt;&amp; arr, int length)
{
    for(int k=1; k&lt;length; k++)
    {
        for(int j=k; j&gt;0; j--)
        {
            if(arr[j] &lt; arr[j-1])
            {
                int temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;

            }
        }
    }
}
</code></pre>
<p>Das Einlesen (z27) hatte ich zuerst wie folgt implementiert:</p>
<pre><code>for(unsigned int i = 0; i!=lines; i++) //einlesen?????
    {
        fin &gt;&gt; liste[i];
        i++;
    }
</code></pre>
<p>Das verursachte aber einen Laufzeitfehler, also habe ich es dann mit push_back() gelöst... Warum geht das so nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291354</guid><dc:creator><![CDATA[kaenzign]]></dc:creator><pubDate>Sat, 19 Jan 2013 17:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:06:06 GMT]]></title><description><![CDATA[<p>Lustig, genau das gleiche Problem hatte ich auch als ich <a href="http://www.c-plusplus.net/forum/u122921" rel="nofollow">diesen</a> Beitrag schrieb.<br />
Du kannst mit dem Array-Zugriff nur auf Elemente zugreifen, die bereits vorhanden sind.<br />
Mit vector::resize() musst du erst die Größe sagen, die das Array haben soll, oder push_back verwenden, was das automatisch vergrößert (ist aber ineffizienter).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291355</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:18:34 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>push_back [...] (ist aber ineffizienter)</p>
</blockquote>
<p>Sagt wer?</p>
<p>Das beste ist immer noch reserve+push_back.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291357</guid><dc:creator><![CDATA[bist_du_sone?]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:21:20 GMT]]></title><description><![CDATA[<p>Sage ich.<br />
Natürlich ist reserve() und push_back() das bester, aber nur push_back() ist ineffizienter als resize() und operator [].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291358</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:21:20 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:27:22 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Natürlich ist reserve() und push_back() das bester, aber nur push_back() ist ineffizienter als resize() und operator [].</p>
</blockquote>
<p>Ah, interessant.</p>
<p>Hast du dazu auch eine Begründung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291363</guid><dc:creator><![CDATA[Nathan der Weise?]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:35:05 GMT]]></title><description><![CDATA[<p>Nathan der Weise? schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Natürlich ist reserve() und push_back() das bester, aber nur push_back() ist ineffizienter als resize() und operator [].</p>
</blockquote>
<p>Ah, interessant.</p>
<p>Hast du dazu auch eine Begründung?</p>
</blockquote>
<p>Also wenn ich das richtig verstanden habe wird bei push_back() ja immer automatisch der vector vergörssert, bzw. es wird eine &quot;resize-Funktion ausgeführt.<br />
Klingt für mich plausibel, dass es weniger aufwendig ist, wenn man ganz am Anfang nur einmal resize aufruft und die benötigte Grösse definiert. Oder?</p>
<p>Wie dem auch sei, der Tipp mit dem Resize funktioniert, und auf diese Weise werden,wie es aussieht, auch die backslash-characters ignoriert...</p>
<pre><code>liste.resize(8);
for(unsigned int i = 0; i!=lines; i++) //einlesen?????
{
    fin &gt;&gt; liste[i];
}
</code></pre>
<p>Damit werden alle acht Zahlen am schluss ausgegeben. (und nicht nur 4 wie bei push_back)<br />
Bleibt also nur noch die Frage, wie ich die backslashs mit der push_back()-Methode ignorieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291367</guid><dc:creator><![CDATA[kaenzign]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:35:05 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:33:04 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Sage ich.<br />
Natürlich ist reserve() und push_back() das bester[sic!], aber nur push_back() ist ineffizienter als resize() und operator [].</p>
</blockquote>
<p>Hier eine Klasse zum testen:</p>
<pre><code class="language-cpp">struct X {
  X(){sleep(1);}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2291368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291368</guid><dc:creator><![CDATA[bist_du_sone?]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:40:43 GMT]]></title><description><![CDATA[<p>OK, ich gebe zu ich habe ein &quot;unter Umständen&quot; vergessen.<br />
Wenn wegen push_back() neuer Speicher angefordert werden muss, ist das ineffizienter als wenn die Kapazität und die Größe nicht verändert werden muss.</p>
<p>Edit: Ja, ok, bei deiner Klasse ist das vielleicht so, aber wir reden hier von Zahlen nicht von Objekten die komplexe Initialisierungsvorgänge benötigen.<br />
Du musst meine Beiträge auch in einem gewissen Kontext sehen. Und in seiner Situation (von der ich eigentlich auch geredet habe) ist das so.</p>
<p>Edit 2 @TE: Warum hast du den Backslashs in deinem File?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291369</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:42:19 GMT]]></title><description><![CDATA[<p>kaenzign schrieb:</p>
<blockquote>
<p>Also wenn ich das richtig verstanden habe wird bei push_back() ja immer automatisch der vector vergörssert, bzw. es wird eine &quot;resize-Funktion ausgeführt.<br />
Klingt für mich plausibel, dass es weniger aufwendig ist, wenn man ganz am Anfang nur einmal resize aufruft und die benötigte Grösse definiert. Oder?</p>
</blockquote>
<p>Der vector ist schlau und vergrössert sich nicht nur um 1 Element sondern vervielfacht seine Grösse.</p>
<p>Das führt dazu, dass jeder Aufruf von push_back durchschnittlich in konstanter Zeit abläuft, d.h. normalerweise braucht man sich da nicht drum zu kümmern. Mit reserve() wird das ganze noch etwas schneller.</p>
<p>Nathan schrieb:</p>
<blockquote>
<p>Du musst meine Beiträge auch in einem gewissen Kontext sehen. Und in seiner Situation (von der ich eigentlich auch geredet habe) ist das so.</p>
</blockquote>
<p>Nicht ganz. resize() vergrössert den Vektor und setzt erst einmal alle Elemente auf 0. Dann werden die noch einmal eingelesen und richtig initialisiert. mit push_back() werden die gleich auf den echten Wert gesetzt, dafür muss die Grösse verändert werden.</p>
<p>Ist insgesamt ein Nullsummenspiel (gerade bei ints) und push_back ist um einiges sauberer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291375</guid><dc:creator><![CDATA[bist_du_sone?]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:44:35 GMT]]></title><description><![CDATA[<p>Die Frage ist nur: Ohne reserve(), was ist da besser? Und seit wann werden die Werte bei ints ohne weiteres Argument auf 0 gesetzt? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2291378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291378</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:44:35 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:47:02 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Und seit wann werden die Werte bei ints ohne weiteres Argument auf 0 gesetzt? <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>
</blockquote>
<p>Seit es vector gibt <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="😉"
    /> Ist übrigens ein weiterer Vorteil von vector gegenüber einem rohen Array.</p>
<p>Ohne reserve() ist resize() in diesem Fall möglicherweise wirklich schneller, aber trotzdem sollte man resize() nicht empfehlen, wenn es doch auch reserve() gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291380</guid><dc:creator><![CDATA[bist_du_sone?]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:47:02 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 16:52:22 GMT]]></title><description><![CDATA[<p>Oh ja, stimmt ja. <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="😃"
    /><br />
Wusste ich gar nicht... Naja, habe es bisher noch nie wirklich gebraucht.^^</p>
<blockquote>
<p>Ohne reserve() ist resize() in diesem Fall möglicherweise wirklich schneller</p>
</blockquote>
<p>Davon rede ich ja die ganze Zeit. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2291386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291386</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 16:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 17:03:15 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<blockquote>
<p>Ohne reserve() ist resize() in diesem Fall möglicherweise wirklich schneller</p>
</blockquote>
<p>Davon rede ich ja die ganze Zeit. <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>
</blockquote>
<p>Ja, aber wayne?<br />
Wenn man kurzen und schönen Code will, nimmt man push_back und wenn man schönen und schnellen Code will nimmt man reserve+push_back. resize hat da gar nichts zu suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291388</guid><dc:creator><![CDATA[bist_du_sone?]]></dc:creator><pubDate>Sat, 19 Jan 2013 17:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 17:18:53 GMT]]></title><description><![CDATA[<p>OK, du hast Recht: TE, verwende reserve() und push_back(), sofern dein Backslash-Problem gelöst ist.<br />
Zufrieden? <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 />
Und was hat Sone damit zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291392</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 17:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 17:41:12 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>OK, du hast Recht: TE, verwende reserve() und push_back(), sofern dein Backslash-Problem gelöst ist.<br />
Zufrieden? <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 />
Und was hat Sone damit zu tun?</p>
</blockquote>
<p>Glaube du hast mich falsch verstanden <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="🙂"
    /><br />
Genau dann wenn ich push_back() verwende, gibt mir die Funktion am schluss nur die Hälfte der Liste sortiert aus. Reserve() und Resize() ändern daran irgendwie nichts. Wie gesagt, meine vermutung ist, dass es ein Zusammenhang mit '\n' hat, mir ist jedoch nicht klar, wie ich das Problem umgehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291401</guid><dc:creator><![CDATA[kaenzign]]></dc:creator><pubDate>Sat, 19 Jan 2013 17:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to alphabetisches Sortieren von Wörtern on Sat, 19 Jan 2013 17:56:16 GMT]]></title><description><![CDATA[<p>Der Fehler ist seltsam...<br />
Übrigens geht das Bestimmen der Größe auch einfacher:</p>
<pre><code>is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);
</code></pre>
<p>Mit seekg bestimmst du die Leseposition im File, abhängig von der Position, die im zweiten Parameter angegeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2291404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2291404</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 19 Jan 2013 17:56:16 GMT</pubDate></item></channel></rss>