C++ 在函数中使用数组方法
如果只能向数组传递指针,因为指针只指向第一个元素,那么如何在函数中使用数组方法 我特别询问的是如何使用数组方法,而不是如何检查数组大小或数组是否为空 例如,如何让下面代码中的array.empty()工作C++ 在函数中使用数组方法,c++,arrays,pointers,parameter-passing,C++,Arrays,Pointers,Parameter Passing,如果只能向数组传递指针,因为指针只指向第一个元素,那么如何在函数中使用数组方法 我特别询问的是如何使用数组方法,而不是如何检查数组大小或数组是否为空 例如,如何让下面代码中的array.empty()工作 class Solution{ public: void testArray(int &array)[5]){ //or (int* array) or (int array[]) std::cout << array.empty() <&l
class Solution{
public:
void testArray(int &array)[5]){ //or (int* array) or (int array[])
std::cout << array.empty() << std::endl;
}
}
int main(int argc, const char * argv[])
{
int a1[] = {1,2,3,4,5};
Solution s1;
s1.testArray(a1);
}
类解决方案{
公众:
void testArray(int&array)[5]){//或(int*array)或(int-array[]
std::cout您将类型int[5]
与std::array
相混淆。这是不同的事情
第一种类型(“裸”数组)没有成员,可以自动衰减为指向int的指针,该指针确实指向第一个元素,并且不传递有关数组长度的信息
是一个模板类,它提供边界检查(使用std::array::at()
)和裸数组上的其他标准STL容器方法
将int a1[]={1,2,3,4,5};
替换为std::array a1={{1,2,3,4,5};
(并更新Solution::testArray()
的签名以获取std::array const&
参数),您将能够使用这些方法