📅  最后修改于: 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
,并且在编译时计算,因此安全而且更快。
C++ STL提供了一个非常有用的算法std::size
,可以用于获取序列的长度,包括数组。
#include <iterator>
#include <iostream>
int main()
{
int arr[6];
std::cout << std::size(arr) << '\n';
}
这也将返回6
。
总体上,以上三种方法都可以用于获取数组长度,但是在不同的情况下选择不同的方法可能更好。对于单独的数组,使用方法一或方法二来获取是很好的选择。如果您使用了STL容器,那么使用std::size
更方便。