std :: vector e memoria contigua di array multidimensionali

So che lo standard non obbliga std::vector ad allocare blocchi di memoria contigui, ma tutte le implementazioni obbediscono comunque a questo.

Supponiamo che io desideri creare un vettore di un array statico multidimensionale. Considera 2 dimensioni per semplicità e un vettore di lunghezza N. Vorrei creare un vettore con N elementi di, diciamo, int[5] .

Posso essere certo che tutti gli interi N * 5 siano ora contigui in memoria? Quindi in linea di principio potrei accedere a tutti gli interi semplicemente conoscendo l’indirizzo del primo elemento? Questa implementazione dipende?

Per riferimento il modo in cui attualmente creo un array 2D in un blocco di memoria contiguo consiste nel creare prima una matrice (dynamic) di float * di lunghezza N, allocando tutti i float N * 5 in un array e quindi copiando l’indirizzo di ogni quinto elemento in la prima matrice di float* .