我想计算数组中元素的实际数量。 但是,如果我使用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。请建议我一种在不影响性能的情况下导出元素数量的方法。
答案 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来实现此行为。声明简单数组意味着您在堆上分配了足够的内存。由于总有东西(分配后在数组的每个索引上都有随机值),因此无法确定该内存是否被有效的东西“占用”。