我是編程新手,我想知道如何獲取數組的大小,即獲取數組內部元素的大小。例如,如果我聲明一個大小爲10的數組,但只向數組中輸入3個元素,我將如何確定這個數組的大小?如果我不知道最初放置了多少元素。C++獲取數組的大小
回答
如果您聲明一個數組,例如int array[10]
,那麼它的大小總是10 * sizeof(int)
。無法知道您訪問過多少次;你需要手動跟蹤。
您應該考慮使用容器類,例如std::vector
:
std::vector<int> vec;
vec.push_back(5);
vec.push_back(10);
vec.push_back(42);
std::cout << vec.size() << "\n"; // Prints "3"
你保持當你受到1. 每當你從數組刪除添加到陣列增加計數初始化爲0
反變盤點由1
遞減計數anytime count會給你數組的大小。
爲什麼選擇爲答案投票。請幫我理解。 – MduSenthil
建議:
int[10] arr;
//init all to null
for (int i =0; i < 10; i++)
arr[i] = 0;
arr[0]=1;
arr[2]=5;
int sz = 0;
for (int j = 0; j < 10; j++)
if (arr[j] != 0) sz++;
爲什麼downvote?從技術上說我沒有做任何不正確的事情。 –
我沒有downvote,但所有這些代碼確實是計數非零元素的數量。 –
如果聲明10個元件的舊式陣列,例如std::string words[10]
,數組的大小總是10個字符串。即使採用新款式(std::array
),它也是一個固定大小。
您可能正在尋找一個std::vector<>
。這沒有固定的大小,但確實有.size()
方法。因此,如果向它添加三個元素,假設您不知道它,將會有.size()==3
獲取數組大小(以元素數量爲單位) 使用sizeof(a)/ sizeof(a [0] )
請參閱下面的示例程序。我用C但它應該繼續到C++就好了
#include <stdio.h>
int main(){
int a[10];
printf("%d elements\n",sizeof(a)/sizeof(a[0]));
return 0;
}
//output: 10 elements
確實。但這不是OP要求的。 –
有幾種可能的方法,但它們取決於您的定義。
如果您知道用戶不會輸入值(也稱爲哨兵值),則可以使用像memset這樣的函數將整個數組設置爲該未使用的值。然後,您將遍歷列表中所有列表中不匹配該值的變量。
另一種方法是構建自己的數組類,該數組只在數組被修改時計數(您必須根據需要重載=和[]函數)。
您也可以建立一個動態鏈接列表,所以當用戶添加變量時,可以通過遍歷列表或計數來確定計數。但是,如果你將數組作爲基本數組,並不知道它是否是實際的起始狀態,也不知道用戶期望什麼(因爲這是你的程序,這不應該發生) ,那麼一般來說,不,有已知的方法可以知道這一點。
- 1. 獲取數組的大小
- 2. 獲取組的大小KineticJS
- 3. 如何獲取String數組的大小
- 4. 獲取多維數組的大小
- 5. 獲取XTemplate中數組的大小
- 6. 大小C數組
- 7. 獲取一個嵌套的數組的大小用C
- 8. 如何可靠地獲取C風格數組的大小?
- 9. 獲取臉書組大小
- 10. 在Angular-JS中獲取數組大小
- 11. C++ Boost asio獲取數據大小?
- 12. C++數組可變大小的數組
- 13. C++如何從動態分配獲取數組大小?
- 14. c#從數組中獲取最小值
- 15. 在perl中獲取數組中數組的大小
- 16. 以C返回大小獲取大文件的大小爲0
- 17. 大小和數組在C
- 18. C++託管數組大小
- 19. 如何從C/C++獲取virt大小?
- 20. 獲取反應組分的大小?
- 21. 如何在C/Objective-C中獲得數組的大小?
- 22. Windbg獲取C++對象的大小
- 23. 獲取隱藏結構的大小C
- 24. 獲取文件的大小在objective-c
- 25. 獲取結構的大小在C#
- 26. 如何獲取C文件的大小?
- 27. 獲取動態指針的大小C++
- 28. 獲取作爲輸入到C++函數傳遞的字符*數組的大小
- 29. C++中數組的參數大小
- 30. C++數組大小的x86和x64的
@Phonon:不,甚至Java都不會跟蹤你在一個數組中填充了多少元素。 –
您似乎不僅在C++中缺乏大量的基礎知識,而且在編程方面也一般。沒關係。我建議你應該閱讀[一本好的C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) –
@R。你是對的,我誤解了這個問題。 – Phonon