回答
您可以使用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