如何在C++中获取数组长度:5种实用方法详解

引言

在这篇文章中,我们将学习C++中可以寻找数组长度的各种方法。

基本上,当我们说一个数组的长度时,我们实际上是指相应数组中存在的元素总数量。例如,对于下面给出的数组:

int array1[] = { 0, 1, 2, 3, 4 }

在这里,数组的大小或长度等于其中元素的总数。在这种情况下,总数是”5″。

在C++中找到数组长度的方法

现在让我们来看一下在C++中找到数组长度的不同方法,它们如下:

  1. 逐个元素计数
  2. begin()和end()
  3. sizeof()函数
  4. STL中的size()函数
  5. 指针

现在,让我们逐一详细讨论每种方法,并配以例子说明。

1. 逐个元素计算

遍历给定的数组,并同时计算我们遍历的元素总数可以得到数组的长度,对吗?

但是对于遍历,如果我们不事先知道数组的长度,就不能直接使用for循环。这个问题可以通过使用简单的for-each循环来解决。仔细看下面的代码。

#include<iostream>#include<array>using namespace std;int main(){   int c = 0;   int arr[]={1,2,3,4,5,6,7,8,9,0};   cout<<"数组内容为: ";   for(auto i: arr)   {   		cout<<i<<" ";   		c++;   }   cout<<"\n给定数组的长度为: "<<c;   return 0;}

输出:

数组内容为: 1 2 3 4 5 6 7 8 9 0
给定数组的长度为: 10

在这里,正如我们所说的,我们使用一个带有迭代器i的for-each循环遍历整个数组arr。同时计数器c被递增。最后,当遍历结束时,c保存了给定数组的长度。

使用begin()和end()方法

使用标准库的begin()和end()函数计算数组长度

我们还可以使用标准库的begin()和end()函数来计算数组的长度。这两个函数分别返回指向数组开始和结束的迭代器。仔细观察给定的代码。

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  
   //给定的数组
   int arr[] = { 11, 22, 33, 44 };
   
   cout<<"数组的长度是:"<<end(arr)-begin(arr); //计算长度
   
   return 0;
}

输出:

数组的长度是:: 4

因此,正如我们所看到的,两个函数end()和begin()的返回值之间的差异给出了给定数组arr的大小或长度。也就是说,在我们的例子中是4。

在C++中使用sizeof()函数来查找数组的长度

在C++中,sizeof() 运算符返回传递变量或数据的大小(以字节为单位)。同样地,它也返回存储数组所需的总字节数。因此,如果我们将数组的大小除以每个元素占用的大小,就可以得到数组中元素的总数。

让我们看看这是如何运作的:

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //给定的数组
   int  arr[] = {10 ,20 ,30};
   
   int al = sizeof(arr)/sizeof(arr[0]); //长度计算
   cout << "数组的长度是:" <<al;
   
   return 0;
}

结果:

数组的长度是:: 3

正如我们所看到的,我们得到了我们想要的结果。

使用STL中的size()函数

这是文章《在C++中找到数组的长度》的第3部分(共4部分)。

内容片段: 我们在标准库中定义了一个size()函数,它返回给定容器(在我们这里是数组)中的元素数量。

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //给定的数组
   array<int,5> arr{ 1, 2, 3, 4, 5 };
   //使用STL中的size()函数
   cout<<"\n给定数组的长度是: "<<arr.size();
   return 0;
}

结果:

给定数组的长度是: 5

根据期望,我们得到了如上所示的输出。

5. 在C++中使用指针来查找数组长度

我们还可以使用指针来找到给定数组的长度。让我们看看如何做到这一点。

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //给定的数组
   int  arr[6] = {5,4,3,2,1,0};
   
   int len = *(&arr + 1) - arr;
   //*(&arr + 1)是数组最后一个元素之后
   //的下一个内存位置的地址
   
   cout << "数组的长度是: " << len;
   
   return 0;
}

输出:

数组的长度是: 6

表达式*(&arr+1)给出的是数组最后一个元素之后的内存位置的地址。因此,它与数组起始位置或基地址(arr)之间的差值给出了给定数组中元素的总数。

结论

所以,在这个教程中,我们讨论了在C++中找到数组长度的各种方法。尽管上面的每个例子都很容易操作,但我们更倾向于使用for-each循环的方法。这不仅因为代码的可读性,还因为它具备跨平台的可靠性。

如有任何进一步的问题,请随时在下方留言。

参考文献

  • 如何找到数组的长度?- Stack Overflow问题,
  • C++中的for-each循环 – JournalDev文章.
bannerAds