tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1371
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Onkel Schuppig Onkel Schuppig ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    191
    Hallo allerseits,
    ich habe wieder mal mit riesigen Datenmengen zu tun. Dieses Mal geht es um vector<T>, der durchaus so groß werden kann, dass eine bad_alloc exception ausgeworfen wird. Algorithmisch gesehen komme ich um so einen großen Vektor aber nicht herum.
    Da man dem vector ja einen Allocator vorschreiben kann, kam ich auf die Idee, ob man den Vektorinhalt nicht in einer Datei verwalten kann.
    Ich bräuchte dann den Algorithmus gar nicht groß umschreiben, sondern nur einen selbstentwickelten Allokator mitgeben.
    Bevor ich weitermache, wollte ich fragen, ob das überhaupt denkbar ist?
     
    Grüße OS

  2. #2
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    Du möchtest also eine Datei aufbauen, die Datensätze gleicher Struktur hintereinanderschreibt, und die du später bei Bedarf teilweise wieder einlesen und verarbeiten kannst. Mit anderen Worten: du hättest gerne eine (index-)sequentielle Datei. Du hast oder findest bestimmt eine Bibliothek mit Datenbankklassen, die das unterstützt (Stichwort ISAM).
     
    Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons

    Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.

  3. #3
    Onkel Schuppig Onkel Schuppig ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    191
    Ja, die Datei enthält ausschließlich Blöcke gleicher Größe.
    Damit ich nicht den ganzen Code umschreiben muss, wäre es super, wenn ich vector behalten könnte und wahlweise auf "memory" oder "file" basiere.
    Ist für mich auch allgemein sehr interessant.
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    #include <vector>
     
    // Standard
    std::vector< Datensatz > vec1;
     
    // mit eigenem Allocator, der erst noch entwickelt werden muss.
    std::vector< Datensatz, FileAllocator<Datensatz> > vec2;

    Ich bin fast überzeugt, dass das irgendwie geht. Ich habe im Internet schon einen Artikel gefunden ("writing your own STL allocator").
    Wenn ich damit klar komme, stelle ich den Code mal hier ein.
     
    Grüße OS

  4. #4
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    Ich glaube trotzdem, dass die Einbeziehung von ISAM- bzw. Datenbankklassen sich lohnen würde. Die abzufragenden Daten könntest du immer noch in einen vector überführen, Änderungen kannst du mit UPDATE-Statements direkt in der Datei machen, die benötigten Sätze können komfortabel mit einem SELECT-Statement herausgesucht werden etc. Möglicherweise vereinfacht das auch deine Verarbeitungsroutinen.
     
    Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons

    Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.

Ähnliche Themen

  1. Schriftart in PSD-Datei speicher?
    Von angel_inside im Forum Photoshop
    Antworten: 5
    Letzter Beitrag: 13.09.07, 16:07
  2. Vector in CSV-Datei speichern
    Von Djunix im Forum Java
    Antworten: 2
    Letzter Beitrag: 14.07.06, 19:35
  3. Antworten: 1
    Letzter Beitrag: 02.12.05, 11:30
  4. Antworten: 3
    Letzter Beitrag: 28.06.05, 08:59
  5. wie speicher ich in .pat datei
    Von suain im Forum Photoshop
    Antworten: 2
    Letzter Beitrag: 23.02.04, 00:26

Stichworte