... Виктор Sehr и Sbi Рекомендуемые используя вместо одного вектора и получить элемент с my_vector [х + у * 100 + Z * 100 * 100]. Почему это?
Учитывая размеры, это логическая рекомендация , если размеры фиксированы.
По соображениям безопасности? Если да, то как это повышает производительность?
Рассмотрим:
- количество отчислений, необходимых для создания всех массивов
- время, чтобы скопировать хотя бы одно измерение
- сложность это добавляет к распределителю системы
- время, принимает
- сложность общих операций, таких как заполнение
Редактировать: Применяются ли эти причины, когда ширина/высота/глубина не совпадают и могут измениться?
Изменение размера массива (массивного!) Может быть очень медленным. Вы должны понимать, как ваша программа будет работать, если вы хотите, чтобы она была самой быстрой. Кроме того, сложность копирования и уничтожения элементов также рассматривается (при использовании чего-то более сложного, чем int
). Если вы делаете много изменения размера или вставки/удаления, тогда сплющенный вектор может быть очень медленным.
Однако, если его размеры фиксированы, вы можете сделать много лучше, чем std::vector
. std::array
- одна из альтернатив. (Если вы идете по маршруту std::array
, будьте осторожны с тем, что вы выделили в стеке)
Вы не можете вычислить индекс, если вектор зазубрен (каждый вектор разного размера). – UncleBens