std::string array[] = { "one", "two", "three" };
如何找出array
in 代码的长度?
如果你有 C++11 支持,你可以使用std::begin
and 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
.
使用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) );
这是文档。考虑基于范围的示例。
C++11 提供std::extent
了沿N
数组第 th 维的元素数量。默认情况下,N
为 0,因此它为您提供数组的长度:
std::extent<decltype(array)>::value
像这样:
int size = sizeof(array)/sizeof(array[0])