Anfänger Übung Iteratoren



  • Hallo,
    in meinem Übungsbuch ist folgender Code abgebildet mit der Aufforderrung ihn auszuprobieren:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>

    int main()
    {
    using namespace std;

    vector<string> menge;

    copy (istream_iterator<string>(cin),
    istream_iterator<string>(),
    back_inserter(menge));

    // Elemente in menge sortieren
    sort (menge.begin(), menge.end());

    copy (menge.begin(), menge.end(),
    ostream_iterator<string>(cout,"\n"));
    }

    dazu steht im Buch:
    "Der copy()-Algorithmus lässt den übergebenen ersten Iterator operieren, solange er ungleich dem zweiten Iterator ist. Das bedeutet, dass von cin so lange gelesen wird, bis keine Daten mehr vorliegen bzw. gelesen werden können."

    Frage: Wann können denn keine Daten mehr gelesen werden, wenn über die Tastatur eingegeben wird? Was muss ich bei Testablauf denn eingeben, damit der copy()-Algorithmus beendet ist und die sort-Anweisung und anschließend die Ausgabe bearbeitet wird?

    danke,
    markus



  • cin wartet auf das "datei"-ende. ueber die tastatur wird das,
    unter unix mit strg-d simuliert.
    unter windows ist das glaub ich strg-z und/oder strg-d.



  • das funktioniert leider nicht,
    trotzdem danke.



  • unterm visual studio funktioniert strg -z als abbruch

    ansonsten mach es so... wenn du sortieren willst, aber anders ist es schicker

    int main() 
    { 
        string get;
        vector<string> menge;             
    
        for(int i = 0; i < 10; ++i) {
    
         cin>>get;
         menge.insert(menge.begin(), get);
       }
       //strg - z funktioniert als abbruch
       // copy (istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(menge)); 
    
        sort (menge.begin(), menge.end()); 
    
        copy (menge.begin(), menge.end(), ostream_iterator<string>(cout,"\n")); 
    }
    


  • hallo,

    wenn ich strg -z eingebe erscheint bei auch unter Visual Studio nur ^Z in der Zeile und sonst passiert nix.

    danke,
    markus



  • seltsam, bei mir funzt es..

    soll nochmal jemand anders versuchen.. vielleicht habe ich eine getunte visual studio version *g*



  • elise schrieb:

    seltsam, bei mir funzt es..
    soll nochmal jemand anders versuchen.. vielleicht habe ich eine getunte visual studio version *g*

    hast bestimmt enter nach ^Z gedrückt.



  • jo



  • danke euch,
    hat noch geklappt. vor ^Z muss Enter gedrückt werden und danach noch zweimal.

    gruß


Anmelden zum Antworten