有没有办法找出一个数组有多少个值?检测是否已经到达数组的末尾也可以工作。


当前回答

我认为这是可行的:

for(int i=0;array[i];i++)
{
 //do_something
}  

其他回答

vector有一个size()方法,该方法返回vector中元素的数量。

(是的,这是半开玩笑的回答)

使用泛型的一个好的解决方案:

template <typename T,unsigned S>
inline unsigned arraysize(const T (&v)[S]) { return S; }

然后简单地调用arraysize(_Array);来获取数组的长度。

您可以使用sizeof()操作符,该操作符用于相同的目的。

请参阅下面的示例代码

#include <iostream>
using namespace std;
int main() {
  int arr[] = {10,20,30,40,50,60};
  int arrSize = sizeof(arr)/sizeof(arr[0]);
  cout << "The size of the array is: " << arrSize;
  return 0;
}

执行sizeof myArray将得到分配给该数组的总字节数。然后,您可以通过除以数组中一个元素的大小来找出数组中的元素数量:sizeof myArray[0]

所以,你会得到这样的东西:

size_t LengthOfArray = sizeof myArray / sizeof myArray[0];

由于sizeof产生size_t,结果LengthOfArray也将是这种类型。

而不是使用内置的数组函数aka:

 int x[3] = {0, 1, 2};

您应该使用数组类和数组模板。试一试:

#include <array>
array<type_of_the_array, number_of_elements_in_the_array> Name_of_Array = {};

现在如果你想求数组的长度,你所要做的就是使用数组类中的size函数。

Name_of_Array.size();

这应该返回数组中元素的长度。