Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Vector binär in datei schreiben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.07.2007, 10:12 Uhr
AureusPhoenix



Hi Leute,

ich möchte mir grad ein Programm schreiben welches mir Primzahlen berechnet. Um das möglichst schnell zu machen möchte ich natürlich nur auf eine Teilbarkeit durch alle bereits berechneten Primzahlen prüfen.
Also leg ich mir nen Vector an, schreibe 2 als Primzahl rein und gehe in ner Zählschleife bis zu nem Endwert alle ungeraden höheren Zahlen durch und prüfe mit modulo ob eine bereits berechnete Primzahl ein Teiler von ihr ist. Wenn ja, wird abgebrochen, wenn nein wird die Zahl am ende dem vector hinzugefügt.
Alles schön und gut. Aber ich will ja nicht jedes mal wenn ich das Programm aufrufe von vorn anfangen zu berechnen. Ich möchte am Anfang des Programms alle bereits berechneten Primzahlen aus einer Datei einlesen und den neuen Vector später auch wieder abspeichern.

Könnt ihr mir sagen wie ich das am besten umsätze? Vorallem wird es ein Problem wenn ich irgendwann 100.000.000 Primzahlen habe, dass das Einlesen ewig dauert. Das müsste also auch schon ein bisschen optimiert, also wenigstens binär abgespeichert sein.

Schonmal DANKE für jede Hilfe!

PS: Ich hab erst vor ein paar Monaten überhaupt mit dem Programmieren als Nebenfach an der Uni angefangen und hab noch keinen sonderlich großen Schatz an Erfahrungen und Wissen. Also bitte den Quelltext schön strukturieren und mit kommentaren versehen. Sonst guck ich bestimmt wie ein Schwein ins Uhrwerk.

DANKE
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.07.2007, 10:20 Uhr
xXx
Devil


nja ist ja eigentlich nicht sooo schwer ...

C++:
std::vector<int> data;
// ---
std::ofstream file_stream("cur_data.dat", std::ios::out | std::ios::binary);
if (!file_stream)
    return false;

file_stream.write(reinterpret_cast<const char*>(&data.size()), sizeof(std::size_t));
for (std::size_t item = 0; item < data.size(); ++item)
    file_stream.write(reinterpret_cast<const char*>(&data.at(item), sizeof(int));




C++:
// ---
std::ifstream file_stream("cur_data.dat", std::ios::in | std::ios::binary);
if (!file_stream)
    return false;

std::size_t size = 0;
file_stream.read(reinterpret_cast<char*>(&size()), sizeof(std::size_t));
std::vector<int> data(size);

for (std::size_t item = 0; item < data.size(); ++item)
{
    int cur = 0;
    file_stream.read(reinterpret_cast<char*>(&cur), sizeof(int));
    data.push_back(cur);
}

std::copy(data.begin(), data.end(), std::ostream_iterator<int>(std::cout, " - ")); // ausgeben ...


... ist eigentlich ganz einfach!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: