有没有办法找出一个数组有多少个值?检测是否已经到达数组的末尾也可以工作。
当前回答
而不是使用内置的数组函数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();
这应该返回数组中元素的长度。
其他回答
在c++中,使用std::array类来声明数组,可以很容易地找到数组的大小以及最后一个元素。
#include<iostream>
#include<array>
int main()
{
std::array<int,3> arr;
//To find the size of the array
std::cout<<arr.size()<<std::endl;
//Accessing the last element
auto it=arr.end();
std::cout<<arr.back()<<"\t"<<arr[arr.size()-1]<<"\t"<<*(--it);
return 0;
}
事实上,数组类有很多其他函数,让我们使用数组作为标准容器。 参考1到c++ std::array类 引用2到std::array类 参考文献中的例子很有帮助。
执行sizeof myArray将得到分配给该数组的总字节数。然后,您可以通过除以数组中一个元素的大小来找出数组中的元素数量:sizeof myArray[0]
所以,你会得到这样的东西:
size_t LengthOfArray = sizeof myArray / sizeof myArray[0];
由于sizeof产生size_t,结果LengthOfArray也将是这种类型。
使用泛型的一个好的解决方案:
template <typename T,unsigned S>
inline unsigned arraysize(const T (&v)[S]) { return S; }
然后简单地调用arraysize(_Array);来获取数组的长度。
源
假设在页面顶部声明了一个全局数组
int global[] = { 1, 2, 3, 4 };
要找出数组中有多少个元素(在c++中),输入以下代码:
sizeof(global) / 4;
sizeof(NAME_OF_ARRAY) / 4将返回给定数组名的元素数量。
虽然这是一个老问题,但值得将答案更新到c++ 17。在标准库中,现在有一个模板化函数std::size(),它返回std容器或c风格数组中的元素数量。例如:
#include <iterator>
uint32_t data[] = {10, 20, 30, 40};
auto dataSize = std::size(data);
// dataSize == 4