如何计算预定义数组中的元素数

时间:2019-03-22 11:57:29

标签: c++ arrays

我想计算数组中元素的实际数量。 但是,如果我使用sizeof()语句,它将给我数组的大小。不是元素的数量。

int main()
 {
 int a[10],n;
 a[0]=1;
 a[1]=5;
 a[2]=6;
 n=sizeof(a)/sizeof(a[0]);
 cout<<"The size of array " <<n;
 }

在这里,它给我的n值为10而不是3。请建议我一种在不影响性能的情况下导出元素数量的方法。

2 个答案:

答案 0 :(得分:4)

int a[10]; // This would allocate 10 int spaces in the memory;
a[0] = 1;  // You are changing whats inside the first allocated space, but you are not changing the number of items in your C array.

解决方案1(轻松):

#include <vector>

vector<int> a;
a.push_back(1);
a.push_back(2);
size_t size = a.size(); // to get the size of your vector. would return 2. size_t is the actual type returned by size() method and is an unsigned int.

解决方案2(复杂):

您可以创建一个可以调用的int变量,例如numberOfElements,并在每次添加元素时进行更新。 此解决方案实际上是在vector类的实现中使用的。

答案 1 :(得分:0)

如前所述,您应该使用std :: vector或std:array来实现此行为。声明简单数组意味着您在堆上分配了足够的内存。由于总有东西(分配后在数组的每个索引上都有随机值),因此无法确定该内存是否被有效的东西“占用”。