Я знаю, что стандарт не заставляет std :: vector
выделять непрерывные блоки памяти, но все реализации тем не менее соблюдайте это.
Предположим, я хочу создать вектор многомерного статического массива. Рассмотрим для простоты 2 измерения и вектор длины N. То есть я хочу создать вектор с N элементами, скажем, int [5]
.
Могу ли я быть уверен, что все N * 5 целых чисел теперь непрерывны в памяти? Чтобы я в принципе мог получить доступ ко всем целым числам, просто зная адрес первого элемента? Зависит ли эта реализация?
Для справки, в настоящее время я создаю 2D-массив в непрерывном блоке памяти, сначала создавая (динамический) массив с плавающей запятой * длины N, размещая все N * 5 с плавающей запятой в одном массиве, а затем копирование адреса каждого 5-го элемента в первый массив float *
.