📜  数组长度 c++ (1)

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

数组长度

在C++中,要获取数组的长度有几种方法。

方法一:使用数组的内置函数

C++有一个内置函数sizeof,可以获取变量或数据类型的大小,它可以用于获取数组的总字节数。因此,总长度可以通过除以数组中单个元素的大小来计算。

int arr[6];
int length = sizeof(arr) / sizeof(arr[0]);

这将返回6,因为数组包含6个元素。

但是,在使用sizeof计算数组长度时需要非常小心,因为如果将数组传递给另一个函数时,它将转换为指针,并且sizeof将返回指针的大小,而不是数组的总字节数。

方法二:使用常量表达式

C++11标准中,可以使用常量表达式对数组长度进行计算。常量表达式是所有输入都是常量的表达式,可以在编译时计算。因此,我们可以使用模板元编程技术(即编写编译时计算的代码),来计算数组长度。

template <typename T, std::size_t N>
constexpr std::size_t array_size(T (&)[N]) noexcept
{
    return N;
}

int arr[6];
int length = array_size(arr);

这将返回6,并且在编译时计算,因此安全而且更快。

方法三:使用STL算法

C++ STL提供了一个非常有用的算法std::size,可以用于获取序列的长度,包括数组。

#include <iterator>
#include <iostream>

int main()
{
    int arr[6];
    std::cout << std::size(arr) << '\n';
}

这也将返回6

总体上,以上三种方法都可以用于获取数组长度,但是在不同的情况下选择不同的方法可能更好。对于单独的数组,使用方法一或方法二来获取是很好的选择。如果您使用了STL容器,那么使用std::size更方便。