如何找出数组的长度?

时间:2013-04-07 09:56:47

标签: c++ arrays size

std::string array[] = { "one", "two", "three" };

如何在代码中找出array的长度?

4 个答案:

答案 0 :(得分:6)

如果您支持C ++ 11,则可以使用std::beginstd::end。:

int len = std::end(array)-std::begin(array); 
// or std::distance(std::begin(array, std::end(array));

或者,您可以编写自己的模板函数:

template< class T, size_t N >
size_t size( const T (&)[N] )
{
  return N;
}

size_t len = size(array);

这适用于C ++ 03。如果您要在C ++ 11中使用它,那么值得将其设为constexpr

答案 1 :(得分:4)

使用

中的sizeof() - 运算符
int size = sizeof(array) / sizeof(array[0]);

或更好,请使用std::vector,因为它提供std::vector::size()

int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

Here是文档。考虑基于范围的示例。

答案 2 :(得分:3)

C ++ 11提供了std::extent,它为您提供了数组N维度内元素的数量。默认情况下,N为0,因此它为您提供数组的长度:

std::extent<decltype(array)>::value

答案 3 :(得分:2)

像这样:

int size = sizeof(array)/sizeof(array[0])