📜  查找数组的长度 - C++ (1)

📅  最后修改于: 2023-12-03 15:40:24.521000             🧑  作者: Mango

查找数组的长度 - C++

在C++中,使用数组是很常见的操作。数组可以存储一组相同类型的数据。当我们需要处理数组时,通常需要知道数组的长度。那么如何查找数组的长度呢?

使用sizeof操作符

在C++中,使用sizeof操作符可以用来计算数组的长度。sizeof操作符返回一个表示对象大小的整数值。对于数组来说,sizeof操作符返回的值为数组的总字节数。

下面是一个使用sizeof操作符计算数组长度的示例代码:

int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(arr[0]);

上面的代码中,arr是一个包含5个元素的整型数组。sizeof(arr)返回数组所占用的总字节数,而sizeof(arr[0])返回数组中每个元素所占用的字节数,所以将数组总字节数除以每个元素的字节数,得到的就是数组的长度。在本例中,len的值为5。

需要注意的是,如果数组是由指针传递而来,则无法使用sizeof操作符来计算数组长度,因为在这种情况下,sizeof操作符返回的是指针变量的字节数,而不是所指向的数组的字节数。

使用标准库函数

除了使用sizeof操作符外,还可以使用标准库中提供的函数来查找数组的长度。在C++中,数组是通过指针进行访问的,所以可以利用指针算术运算和指针比较来得到数组的长度。其中,指针算术运算包括指针加减、指针与整数相加等操作。指针比较包括大于、小于、等于等操作。

下面是一个使用标准库函数计算数组长度的示例代码:

#include <iostream>
#include <algorithm>

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    int* begin = std::begin(arr);
    int* end = std::end(arr);
    int len = std::distance(begin, end);
    std::cout << "Array length: " << len << std::endl;
    return 0;
}

上面的代码中,std::begin(arr)和std::end(arr)分别返回指向数组头和尾的指针。std::distance(begin, end)计算begin和end之间的距离,即数组的长度。在本例中,len的值为5。

需要注意的是,std::begin和std::end只适用于STL容器和原生数组,而不能用于普通指针或指针数组。

无论使用sizeof操作符还是标准库函数,都可以得到数组的长度。使用哪种方法取决于具体情况和个人偏好。需要注意的是,在多数情况下使用sizeof操作符所得到的长度要比使用标准库函数要快,因为sizeof操作符是在编译时计算,而标准库函数是在运行时计算。