在C++中查找数组长度

时间:2020-02-23 14:29:57  来源:igfitidea点击:

介绍

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

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

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

此处数组的大小或者数组的长度等于数组中元素的总数。
在这种情况下为" 5"。

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

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

  • 逐元素计数
  • begin()end()
  • sizeof()函数,
  • STL中的size()函数,
  • 指针。

现在,让我们与示例并详细地逐一讨论每种方法。

1.逐元素计数

在给定数组中遍历并同时计算遍历的元素总数可以使我们知道数组的长度对吗?

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

#include<iostream>    
#include<array> 
using namespace std;
int main()
{
 int c;
 int arr[]={1,2,3,4,5,6,7,8,9,0};
 cout<<"The array is: ";
 for(auto i: arr)
 {
 		cout<<i<<" ";
 		c++;
 }
 cout<<"\nThe length of the given Array is: "<<c;
 
 return 0;
}

输出:

The array is: 1 2 3 4 5 6 7 8 9 0
The length of the given Array is: 10

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

2.使用begin()和end()

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

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  
 //Given Array
 int arr[] = { 11, 22, 33, 44 };
 
 cout<<"The Length of the Array is : "<<end(arr)-begin(arr); //length
 
 return 0;
}

输出:

The Length of the Array is : 4

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

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

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

让我们看看它是如何工作的

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //Given array
 int  arr[] = {10 ,20 ,30};
 
 int al = sizeof(arr)/sizeof(arr[0]); //length calculation
 cout << "The length of the array is: " <<al;
 
 return 0;
}

输出:

The length of the array is: 3

如我们所见,我们获得了所需的输出。

4.在STL中使用size()函数

我们在标准库中定义了size()函数,该函数返回给定容器(在我们的例子中为数组)中元素的数量。

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //Given array
 array<int,5> arr{ 1, 2, 3, 4, 5 };
 //Using the size() function from STL
 cout<<"\nThe length of the given Array is: "<<arr.size();
 return 0;
}

输出:

The length of the given Array is: 5

根据需要,我们得到如上所示的输出。

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

我们还可以使用指针找到给定数组的长度。
让我们看看

#include<iostream>    
#include<array> 
using namespace std;
int main()
{  //Given array
 int  arr[6] = {5,4,3,2,1,0};
 
 int len = *(&arr + 1) - arr;
 //*(&arr + 1) is the address of the next memory location
 //just after the last element of the array
 
 cout << "The length of the array is: " << len;
 
 return 0;
}

输出:

The length of the array is: 6

表达式" *(arr + 1)"为我们提供了数组最后一个元素之后的内存空间地址。
因此,它与数组起始位置或者基地址(arr)之间的差异为我们提供了给定数组中存在的元素总数。