回答
您可以使用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. 在mongodb中查找数组的长度
- 6. c,查找指针数组的长度
- 7. 如何查找文字数组的长度?
- 8. 如何在ActionScript 3.0中查找关联数组的长度?
- 9. 如何找到过滤数组的长度?
- 10. 如何查找数组列表的长度?
- 11. 如何查找手柄模板内的数组长度?
- 12. 如何查找字符串数组的长度?
- 13. 如何找到对象数组的长度在MongoDB中
- 14. 如何找到字符数组长度的Android
- 15. 如何找出数据包的HTTP标头长度?
- 16. 如何找出正确的数据包长度?
- 17. 数组长度
- 18. 如何获得javascript“数组”的长度
- 19. 如何在unix shell中查找数组长度?
- 20. 如何提取json路径并查找数组长度?
- 21. OpenCL:输出可变长度数组
- 22. 我如何使用undefiend数组长度?
- 23. 零长度数组
- 24. 数组长度Matlab
- 25. 数组长度 - 环
- 26. 数组长度空
- 27. 零长度数组
- 28. 在不使用长度属性的情况下查找数组的长度
- 29. 如何查找长度可变的数字和数组的总和
- 30. 如何复制数组特定长度的数组
或'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