我是编程的新手,我想知道如何获得数组的大小,即得到数组中有多少元素的大小。例如,如果我声明一个大小为10的数组,但只输入3个元素到数组中,我该如何确定这个数组的大小?如果我不知道我最初放了多少元素。
答案 0 :(得分:7)
如果您声明一个数组,例如int array[10]
,其大小始终为10 * sizeof(int)
。没有办法知道你访问它的次数;你需要手动跟踪它。
您应该考虑使用容器类,例如std::vector
:
std::vector<int> vec;
vec.push_back(5);
vec.push_back(10);
vec.push_back(42);
std::cout << vec.size() << "\n"; // Prints "3"
答案 1 :(得分:1)
如果声明一个包含10个元素的旧式数组,例如std::string words[10]
,数组的大小总是10个字符串。即使使用新样式(std::array
),它也会是固定大小。
您可能正在寻找std::vector<>
。这没有固定的大小,但确实有.size()
方法。因此,如果您向其添加三个元素,它将具有.size()==3
答案 2 :(得分:1)
获取数组大小(元素数量),假设您事先不知道它 使用sizeof(a)/ sizeof(a [0])
参见下面的示例程序。我用C但它应该很好地延续到C ++
#include <stdio.h>
int main(){
int a[10];
printf("%d elements\n",sizeof(a)/sizeof(a[0]));
return 0;
}
//output: 10 elements
答案 3 :(得分:0)
有几种可能的方法,但它们取决于您的定义。
如果您知道有一个用户不会输入的值(也称为标记值),您可以使用像memset这样的函数将整个数组设置为该未使用的值。然后,您将遍历列表,计算列表中与该值不匹配的所有变量。
另一种方法是构建自己的数组类,只要数组被修改就会计数(你必须根据需要重载=和[]函数)。
您还可以构建动态链接列表,以便在用户添加变量时,可以通过遍历列表或保持计数来确定计数。
但是,如果你把数组作为基本数组,不知道它是实际的起始状态,也不知道用户期望什么(假设这是你的程序,这不应该发生),那么一般来说,不,有知道这种方法。
答案 4 :(得分:-1)
您将计数器变量计数初始化为0。
每当您添加数组时,计数增加1。 每当从数组中删除时,计数减1。
任何时候count都会给你数组的大小。
答案 5 :(得分:-1)
建议:
int[10] arr;
//init all to null
for (int i =0; i < 10; i++)
arr[i] = 0;
arr[0]=1;
arr[2]=5;
int sz = 0;
for (int j = 0; j < 10; j++)
if (arr[j] != 0) sz++;