daten speichern und ausgeben lassen



  • Simon2 schrieb:

    string x(stream.str());
    vector<char> v(x.begin(), x.end());
    

    Braucht man x überhaupt ?

    str gibt leider nur eine kopie zurück.

    string const& x = stream.str();
    

    das würde gehen.



  • queer_boy schrieb:

    ...str gibt leider nur eine kopie zurück....

    Aber was wäre verkehrt daran ?
    In Deinem ersten Beispiel hättest Du auch nur mit einer Kopie gearbeitet...

    Gruß,

    Simon2.



  • in deinem beispiel gäbe es zwei kopien.



  • queer_boy schrieb:

    in deinem beispiel gäbe es zwei kopien.

    Bei Deinem ersten Beispiel doch eigentlich auch, oder ?
    Vermutlich kann der Compiler das aber bei

    string x(stream.str());
    

    wegoptimieren ...
    Ich hatte mit meiner Frage aber ganz bewusst Optimierung außen vor gelassen, weil mich eigentlich nur interessierte, ob es noch andere Gründe für x gäbe.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    vector<char> v(stream.str().begin(), stream.str().end());
    

    begin() zeigt auf das erste element der ersten kopie und end() auf (eins hinter) das letzte element der zweiten kopie. das wird dir also um die ohren fliegen.



  • queer_boy schrieb:

    ...
    begin() zeigt auf das erste element der ersten kopie und end() auf (eins hinter) das letzte element der zweiten kopie. das wird dir also um die ohren fliegen.

    DAS hingegen ist ein Argument, das mich überzeugt. 😃

    Danke,

    Simon2.


Anmelden zum Antworten