如何获得数组的大小?

时间:2014-11-27 14:49:34

标签: c++ c++11

有一个array

...
int score[3];
...
score[0] = 6;
score[1] = 4;
score[2] = 7;

如何获取数组的元素数量? (这里很明显,但我想问一般问题)

3 个答案:

答案 0 :(得分:11)

有几种方法:

  • std::distance(std::begin(score), std::end(score))
  • std::extent<decltype(score)>::value
  • C++17N4280):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指针。