Определяется ли размер std::array стандартом?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Определяется ли размер std::array стандартом?

Сообщение Anonymous »

В C++11 std::array определяется как непрерывное хранилище и производительность не хуже, чем у массива, но я не могу решить, подразумевают ли различные требования стандарта, что std:: массив имеет тот же размер и расположение памяти, что и обычный массив. То есть можете ли вы рассчитывать на sizeof(std::array) == sizeof(int)*N или это специфичная реализация?
В частности, гарантированно ли это будет работать так, как вы ожидаете:

Код: Выделить всё

std::vector< std::array > x(M);
typedef int (*ArrayPointer)[N];
ArrayPointer y = (ArrayPointer) &x[0][0];
// use y like normal multidimensional array
Он работает в двух компиляторах, которые я пробовал (GNU и Intel). Более того, во всей сторонней документации, которую я смог найти (например, здесь), говорится, что std::array столь же эффективен по использованию памяти, как и простой массив, что в сочетании с требованием непрерывности означает, что он должен иметь идентичную структуру памяти. Однако я не могу найти это требование в стандарте.

Подробнее здесь: https://stackoverflow.com/questions/191 ... y-standard
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»