Aufgabe korrekt gelöst ?



  • volkard schrieb:

    endl ist schlecht.

    endl ist gut.



  • Ich denke, hier muß man Struppi folgen und den Trick mit der map einfach zeigen.

    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;
    
    int main ()
    {
    	map<string,int> smap;
    	string tmp,word;
    	int biggest=0;
    	while (cin>>tmp) {
    		int howmuch=++smap[tmp];
    		if (howmuch > biggest) {
    			biggest = howmuch;
    			word = tmp;
    		}
    		cout << "----------------------\n";
    		cout << "Word: " << word <<" = " << biggest << '\n';
    		cout << "----------------------\n";
    	}
    }
    


  • 314159265358979 schrieb:

    volkard schrieb:

    endl ist schlecht.

    endl ist gut.

    Weißt Du, was endl macht? Falls ja, wie begründest Du, daß hier endl verwendet werden soll?



  • 314159265358979 schrieb:

    volkard schrieb:

    endl ist schlecht.

    endl ist gut.

    endl ist gut, wenn einen die Geschwindigkeit nicht interessiert.



  • Wurstinator schrieb:

    314159265358979 schrieb:

    volkard schrieb:

    endl ist schlecht.

    endl ist gut.

    endl ist gut, wenn einen die Geschwindigkeit nicht interessiert.

    Also soll ich mir erst endl angewöhnen, weil die Konsole so langsam ist, und sobald ich in Dateien schreibe, soll ich es mir wieder abgewöhnen. Und später mal überlege ich immer, ob ich '\n' oder endl schreiben sollte, indem ich abschätze, ob zu befürchten ist, daß es schnell gehen soll.
    Nö.
    endl ist gut, wenn ich endl machen will. endl ist nicht gut, wenn ich nur '\n' machen will.



  • Ich fand nur die Aussage: "endl ist schlecht." als solches einfach schwachsinnig. Ich benutze endl, wenn ich \n meine, auch wenn mir gleich alle sagen werden, wie schlecht das doch ist.



  • 314159265358979 schrieb:

    Ich fand nur die Aussage: "endl ist schlecht." als solches einfach schwachsinnig.

    Na, wie gut, daß Du gefragt hast. Und jetzt darfst Du Dir endl wieder abgewöhnen.



  • Endl sagt für mich aber mehr aus als \n.



  • 314159265358979 schrieb:

    Endl sagt für mich aber mehr aus als \n.

    Mir auch. Deswegen nehme ich es nicht, wenn ich gar nicht flushen will.



  • wieviel schneller ist denn /n gegenüber endl ?



  • kantaki schrieb:

    wieviel schneller ist denn /n gegenüber endl ?

    Unendlich.

    endl flusht den Stream. Was zB bei einer Datei bedeutet, dass diese erst vollstaendig auf die Festplatte geschrieben werden muss bevor endl fertig ist. Das bedeutet seeken auf der Platte, Schreibkopf positionieren und schreiben. Das kann dauern.

    Es hebelt ja eine Menge optimierungen des Systems aus: denn solche festplattenzugriffe sind enorm langsam - deshalb wird das alles gecacht und spaeter geschrieben.

    Flush ist extrem teuer. Es macht ja auch so gut wie nie Sinn.



  • aber flushed cout nicht automatisch ?



  • kantaki schrieb:

    aber flushed cout nicht automatisch ?

    cout geht idR auf die Konsole. Die ist so oder so langsam.
    Wo endl teuer wird ist, wenn die Daten auf eine Speichermedium geschrieben werden, oder ins Netzwerk oder so.

    Deshalb faellt es nicht auf, weils bei cout egal ist. Nur wenn man dann cout ploetzlich auf die Platte redirectet oder einen anderen Stream verwendet der auf die Platte/Netzwerk schreibt - dann bricht die Performance ploetzlich komplett ein.

    Deshalb gleich richtig machen.



  • okay danke


Anmelden zum Antworten