2015-01-12 5 views
2

В соответствии с принятым ответом на this question about raw arrays vs std::vector, преимущество исходного массива (еще в 2010 году) было:Имеет ли исходный массив какие-либо преимущества перед массивом std ::?

  • массивы немного более компактные: размер неявное
  • массивов не являются изменяемыми; иногда это желательно
  • массивов не требуют разбора дополнительных заголовков STL (во время компиляции)
  • может быть легче взаимодействовать с кодом прямыми C с массивом (например, если C выделяет и C++ используется)
  • массивы фиксированного размера могут быть встроены непосредственно в структуры или объект, который может улучшить расположение памяти и сокращение числа распределений кучи, необходимого

Насколько мне известно, станд :: массива адреса все, кроме третий пункт.

Так что, если мне отчаянно нужно улучшить время компиляции, есть ли причина использовать необработанный массив над std :: array в C++ 11?

+0

Не можете увидеть какие-либо преимущества для сырых массивов, это как раз наоборот (Я имею в виду 'std :: array' BTW not' std :: vector'). –

+0

необработанные массивы могут автоматически определять размер файла. – Yakk

+0

@Yakk Что значит «авто размер»? – Barry

ответ

0

Да, это не требует, чтобы явно указать размер, что делает его проще инициализировать его вручную:

char const *messages[] = 
{ 
    "Hi", 
    "Bye", 
    "foo", 
    "bar" 
};