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

如何找出arrayin 代码的长度?

4

4 回答 4

6

如果你有 C++11 支持,你可以使用std::beginand std::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.

于 2013-04-07T09:58:13.310 回答
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) );

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

于 2013-04-07T10:00:31.530 回答
3

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

std::extent<decltype(array)>::value
于 2013-04-07T10:06:29.473 回答
2

像这样:

int size = sizeof(array)/sizeof(array[0])
于 2013-04-07T10:00:59.360 回答