Ich mache eine iterative Berechnung in einem Flussnetzwerk, während der ich aufzeichnen muss, wie viel jede Quelle zum Fluss an jeder Kante beiträgt. Der Fluss an einer beliebigen Kante ist im Durchschnitt auf 2% der Quellen zurückzuführen, also definiere ich vector< map<int, double> > flow
, wobei flow[e][s] = f
bedeutet, dass der Fluss an der Kante e
aufgrund der Quelle s
f
ist. Bei jeder Iteration wird jede f
in flow
aktualisiert.Externe Speicherdatenstruktur zum Ersetzen von Vektorkarten
Die Spitzenspeicherbelegung des Programms erreicht fast 4 GB. Dies funktioniert auf (32-Bit) Linux und OS X, aber es stürzt unter Windows ab (was einen 2 GB per process limit vorgibt).
Wie kann ich eine datenträgerbasierte Datenstruktur mit einer vector< map<int, double> >
Schnittstelle implementieren (oder sonstwie umgehen)?