Я новичок в C++ и в настоящее время изучаю его с помощью книги. Эта книга, похоже, говорит, что в зависимости от того, как вы ее объявляете, существует несколько типов массивов. Я думаю, что разница между динамическими массивами и статическими массивами ясна для меня. Но я не понимаю разницы между классом STL std::array
и статическим массивом.Объявление массивов в C++
STL std::array
переменная объявлена как:
std::array < int, arraySize > array1;
В то время как статическая переменная массив объявлен как:
int array1[arraySize];
Есть ли принципиальная разница между этими двумя? Или это просто синтаксис, и они в основном одинаковы?
Нет разницы, только вопрос синтаксиса и я считаю, что было доступно только C++ 11 и выше, однако заметить, что декларация STL дает вам большой набор инструментов функций и итераторы, которые можно использовать в массиве, как и другие один из них, как правило, должен был бы встроить в себя функции, чтобы выполнить тривиальные вещи. Проверьте: http://en.cppreference.com/w/cpp/container/array –
Возможный дубликат [std :: array vs array performance] (http://stackoverflow.com/questions/30263303/stdarray-vs-array-performance) – coincoin
Будет большая разница, если вы начнете передавать 'std :: array <>' функции в отличие от встроенных массивов. «Std :: array» знает свой собственный размер, встроенный массив не работает, когда он распадается на указатель. – PaulMcKenzie