【发布时间】:2017-04-07 23:33:49
【问题描述】:
我是 C++ 新手,目前正在自学一本书。这本书似乎说有几种数组取决于你如何声明它。我想动态数组和静态数组之间的区别对我来说很清楚。但是我不明白 STL std::array 类和静态数组之间的区别。
一个 STL std::array 变量声明为:
std::array < int, arraySize > array1;
而静态数组变量声明为:
int array1[arraySize];
两者之间有根本区别吗?还是只是语法,两者基本相同?
【问题讨论】:
-
没有区别,只是语法问题,我相信这仅适用于 C++ 11 及更高版本 但是请注意,STL 声明为您提供了一个可以在数组上使用的函数和迭代器的大工具箱,如另一个你通常必须自己制作内置函数来做琐碎的事情。:检查:en.cppreference.com/w/cpp/container/array
-
当您开始将
std::array<>传递给函数而不是内置数组时,会有很大的不同。std::array知道自己的大小,而内置数组不知道,因为它会衰减为指针。 -
@PaulMcKenzie 您实际上可以通过引用传递 C 样式的数组,在这种情况下,大小将是已知的。
-
离题小唠叨:就叫它
std::array。 STL 几十年前就被纳入标准,array出现得更晚。