Ich genieße es, Algorithmen mit der STL zu entwickeln, jedoch habe ich dieses wiederkehrende Problem, wo meine Datensätze für den Haufen zu groß sind.Festplattengestützte STL-Containerklassen?
Ich habe nach drop-in Ersetzungen für STL-Container und Algorithmen gesucht, die disk-backed sind, d. H. Die Datenstrukturen werden auf der Festplatte und nicht auf dem Heap gespeichert.
Ein Freund wies mich vor kurzem auf stxxl. Bevor ich mich zu sehr damit beschäftige ... Gibt es andere disk-gestützte STL-Ersetzungen, die ich in Betracht ziehen sollte?
HINWEIS: Ich bin nicht in Persistenz oder eingebetteten Datenbanken interessiert. Bitte erwähnen Sie nicht Boost :: Serialisierung, POST ++, relationale Template-Bibliothek, Berkeley DB, SQLite usw. Ich kenne diese Projekte und verwende sie, wenn sie für meine Zwecke geeignet sind.
UPDATE: Mehrere Personen Speicher-Mapping-Dateien und die Verwendung eines benutzerdefinierten allocator erwähnt haben, gute Vorschläge BTW, aber ich würde sie auf die Diskussion here zeigen, wo David Abraham schlägt vor, dass individuelle Iteratoren würde für Disk-backed-Container benötigt werden . Das bedeutet, dass der benutzerdefinierte Allokator-Ansatz wahrscheinlich nicht funktioniert.
Wenn Ihre Datasets für den Heap zu groß sind, sollten Sie überlegen, ob Ihre Systemarchitektur korrekt ist (z. B. ob zu einem 64-Bit-System gewechselt wird; diese sind jetzt häufiger als bei der Abfrage). Sie sollten auch überlegen, ob die STL der richtige Ansatz ist; Es kann Annahmen über die Datenmenge geben, die für Sie nicht gelten. –
@Donal Er reserviert möglicherweise nicht die richtige Menge an Speicher. –