回答
您可以使用std::begin
和std::end
,如果你有C++ 11的支持:
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));
Here是文档。考虑基于范围的示例。
是否可以使用initializiton定义一个'std :: vector'(就像我在普通数组中的例子)? – NPS 2013-04-07 10:04:46
C++ 11版本初始化器。否则,你可以像你一样创建一个数组,并将其分配给std :: vector。我在一分钟后发布文档 – 2013-04-07 10:09:59
这个C级别的表达不应该建议没有解释[其类型不安全和如何可以补救](http://stackoverflow.com/questions/4810664/how-do-i-use-阵列式-C/7439261#7439261)。 – 2013-04-07 10:12:57
像这样:
int size = sizeof(array)/sizeof(array[0])
我知道这个,但我认为它可能不适用于'std :: string'(由于可变的文本长度)。 – NPS 2013-04-07 10:02:59
这个C级别的表达不应该建议没有解释[其类型不安全和如何可以补救](http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c/7439261 #7439261)。 – 2013-04-07 10:18:01
@NPS'sizeof(std :: string)'总是一样的;它与字符串中存储了多少个字符没有任何关系 – 2014-09-27 03:44:16
C++ 11提供std::extent
它给你沿着阵列的第N
维中的元素的数量。默认情况下,N
为0,因此它给出了阵列的长度:
std::extent<decltype(array)>::value
- 1. 如何找出NSData数组的长度?
- 2. 如何查找char数组的长度?
- 3. 如何查找数组类的长度?
- 4. 如何找到一组的长度?
- 5. 如何找出字符串长度
- 6. c,查找指针数组的长度
- 7. 在mongodb中查找数组的长度
- 8. 如何在ActionScript 3.0中查找关联数组的长度?
- 9. 如何找到对象数组的长度在MongoDB中
- 10. 如何查找文字数组的长度?
- 11. 如何在C中查找“char *”数组的长度?
- 12. 如何查找手柄模板内的数组长度?
- 13. 如何找到字符数组长度的Android
- 14. 如何查找数组列表的长度?
- 15. 如何找到过滤数组的长度?
- 16. 如何查找字符串数组的长度?
- 17. AudioQueue如何找出队列数据的播放长度
- 18. 如何找出正确的数据包长度?
- 19. 如何找出数据包的HTTP标头长度?
- 20. 数组长度
- 21. 如何获取数组的长度?
- 22. 如何更改数组的长度
- 23. 如何获得javascript“数组”的长度
- 24. 如何获得aTargets的数组长度?
- 25. 在postgres中查找数组长度
- 26. UIWebView - 如何找到长度
- 27. 找出数组长度静态地使用模板在C++
- 28. 如何提取json路径并查找数组长度?
- 29. 如何在unix shell中查找数组长度?
- 30. OpenCL:输出可变长度数组
或'std :: extent :: value'。 –
2013-04-07 09:59:32
@sftrabbit我甚至没有想到那个。太好了! – juanchopanza 2013-04-07 10:01:43
@sftrabbit Make ** that **答案并获得我的+1 – 2013-04-07 10:02:25