有什麼方法可以計算動態分配數組中的元素數量嗎?使用靜態分配的數組它沒有用(它給了我堆棧溢出錯誤),因爲我需要分配一個緩衝區大小來存儲100,000個雙精度值(100000 * 8 = 800000字節)的數據。無論如何,我沒有這樣做靜態數組,但我真的不想在堆棧上分配這麼大的緩衝區,而不是堆首選。動態和靜態分配數組元素計算?
所以這就是我所做的。
靜態分配的數組,這裏的大小是我實際需要給我的(它肯定會遇到這種情況),但我試過然後用一些較小的尺寸,它爲我工作並打印元素數but this is not what i want i need something which can count how many elements are actually entered by for loop not just return whole size (800010*8)
即ie我們爲char buffer[1000]
,然後爲strlen(buffer)
。
srand (time(0));
double arr[800010];
for(int i = 0; i < 100000; i++)
{
arr[i] = (rand()%10000)+(134.234*i);
std::cout<<"is"<<arr[i]<<std::endl;
}
int numelements = sizeof(arr)/sizeof(arr[0]);
std::cout<<"num elements are"<<numelements*8;//multiplied by 8 is size of double;
動態分配是好的在堆上的內存分配沒問題,但是"num elements are" = 0
?如果有人推薦使用std::vector<double>m_vector
,請建議我如何將它作爲數組傳遞,因爲m_vector.data()
函數僅適用於文本數據,是嗎?或者如果有任何想法我怎麼能計算實際數量的元素?請不要說做100000*8
。我正在尋找一些合乎邏輯的方式來做到這一點。
srand (time(0));
double *arr = new double[800010];
for(int i = 0; i < 100000; i++)
{
arr[i] = (rand()%10000)+(134.234*i);
std::cout<<"is"<<arr[i]<<std::endl;
}
int numelements = sizeof(arr)/sizeof(arr[0]);
std::cout<<"num elements are"<<numelements*8;
什麼不好嗎瞭解矢量?聽起來像矢量是你的問題的確切答案... – John3136
_''m_vector.data()'函數只適用於**文本數據**,是嗎?'_呃,什麼? –
std :: vector有一個函數size(),它會給你的矢量大小。 – sunny1304