Vorrei trovare un modo per memorizzare più std::vectors
, ciascuna di una diversa, ma nota e di dimensioni ragionevolmente piccole, in memoria contigua. Mi rendo conto che potrei scrivere la mia classe, dire con un array molto grande e con puntatori all'inizio di ogni sottosezione della matrice all'interno della matrice più grande trattata come un'entità separata, ma sembra che ci dovrebbe essere un modo più intelligente per fare questo .Allocazione memoria attigua per diversi piccoli std :: vector?
C'è un modo per utilizzare allocators
, ad esempio, per creare contiguo std::vectors
? Mi piacerebbe non reinventare la ruota solo perché voglio questa località di memoria altrimenti normale std::vectors
Non so nemmeno come iniziare la codifica. Devo creare un allocatore che tenga un puntatore alla memoria, assegni un vettore lì, e poi in qualche modo restituisca l'indirizzo della fine di quel vettore, così l'allocatore successivo di std::vector
potrebbe afferrarlo e farlo di nuovo. Come può un allocator
restituire un valore?
Sì, è possibile utilizzare gli allocatori per eseguire questa operazione. Che cosa hai provato? Mostra il tuo lavoro :) – Andrew
@Andrew Ho aggiunto qualcosa nella mia domanda, ma non so da dove cominciare. Non ho lavorato con gli allocatori, e finora tutto ciò che ho fatto è leggere le sezioni di Josuttis nel suo riferimento STL. – sunny
Per caso, le dimensioni sono note al momento della compilazione? – dasblinkenlight