[c++] Problem beim fstream öffnen

Ja, Iteratoren sind mir geläufig - so greife ich ja schließlich später auf die Einträge des Vectors zu. Und dass ich bei copy Source.begin(), source.end(), dest.begin() übergeben muss ist mir ja auch noch klar.

Aber ich durchschaue deinen ersten Aufruf von copy nicht:
C++:
std::copy(std::istream_iterator<Entry>(file_stream), std::istream_iterator<Entry>(), std::back_inserter(m_data));

Das mit dem eofbit werde ich mir nochmal zu Gemüte führen. Und die Konvertierung von BOOL->bool über !! kannte ich auch noch nicht.
Ich weiss, dass die Aufrufe längst noch nicht die optimale Performance haben - aber ist es nicht viel teurer jedes mal ein lokales Objekt anzulegen, anstatt ein bestehendes zu öffnen Das will mir noch nicht so ganz in den Kopf.

Vielen Dank auf jeden Fall schonmal für deine konstruktive Kritik, werde mir das Thema mit den Streams wohl nochmal etwas gründlicher eintrichtern müssen.
 
Zuletzt bearbeitet von einem Moderator:
Hmm ... also das 1. Copy geht halt hin und Iterariert den Filestream anhand des operator>> den du für Entry überladen hast und packt die Werte dann in m_data.

Dabei kommst du nicht (ohne das Dateiformat nen wenig umzuändern) dadrum herum, die Größe des Vectors dynamisch zu verändern. Da aber bei std::vector dazu oft nen komplett neuer Speicher angefordert werden muss, wenn die als erstes angelegt Größe nicht reicht. Dann wird alles kopiert (DAS ist das Problem dabei) und das schluckt Performance! Dann kannst du aber dadurch Performance wieder gut machen, dass du das nur einmal machst und halt eben nicht für 2 Vectoren ...
 
Zurück