有一个array
:
...
int score[3];
...
score[0] = 6;
score[1] = 4;
score[2] = 7;
如何获取数组的元素数量? (这里很明显,但我想问一般问题)
答案 0 :(得分:11)
有几种方法:
std::distance(std::begin(score), std::end(score))
std::extent<decltype(score)>::value
std::size(score)
另见this answer。
答案 1 :(得分:2)
通常是sizeof(score) / sizeof(score[0])
。这种方法的优点是了解数组的工作原理。它也可能是最快的,因为sizeof
在编译时工作,整个表达式可以由编译器优化。
答案 2 :(得分:1)
你可以为此写一个宏。
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(*arr))
您应该熟悉C ++提供的容器(如std::vector
)。其中许多方法都可以为您提供存储的元素的实际数量(size()
或length()
)。
关于C风格的数组,在它们作为参数传递的情况下,它们的大小是未知的,因为数组只是一个const指针。