std :: vector и непрерывная память многомерных массивов

Я знаю, что стандарт не заставляет std :: vector выделять непрерывные блоки памяти, но все реализации тем не менее соблюдайте это.

Предположим, я хочу создать вектор многомерного статического массива. Рассмотрим для простоты 2 измерения и вектор длины N. То есть я хочу создать вектор с N элементами, скажем, int [5] .

Могу ли я быть уверен, что все N * 5 целых чисел теперь непрерывны в памяти? Чтобы я в принципе мог получить доступ ко всем целым числам, просто зная адрес первого элемента? Зависит ли эта реализация?

Для справки, в настоящее время я создаю 2D-массив в непрерывном блоке памяти, сначала создавая (динамический) массив с плавающей запятой * длины N, размещая все N * 5 с плавающей запятой в одном массиве, а затем копирование адреса каждого 5-го элемента в первый массив float * .

5
задан gsamaras 31 May 2014 в 20:37
поделиться