C++ 在函数中使用数组方法

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

如果只能向数组传递指针,因为指针只指向第一个元素,那么如何在函数中使用数组方法

我特别询问的是如何使用数组方法,而不是如何检查数组大小或数组是否为空

例如,如何让下面代码中的array.empty()工作

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&
参数),您将能够使用这些方法