[英]how to make a class function return array and then call and store it in main
在此程序中,要求我使用存儲在file.txt中的一定數量的值。
我有一個類,它具有一個稱為Absolute_frequency的公共函數,該函數返回指向在名為abs_freq []的函數中創建的數組的指針。 我的問題是我現在需要將此陣列保存到我的主陣列中的另一個陣列中。
int *Data::Absolute_frequency() {
/*Here I created 2 arrays that store values representing max and min limit
of certain intervals (eg. 0 to 20, 21 to 40, 41 to 60, etc...)
And then I run my code thru each of these intervals and count how many
values are in them, and store it in abs_freq[]:*/
int *abs_freq=new int [num_intervals]();
for (int j = 0; j < num_values; j++)
{
for (int i = 0; i < num_intervals; i++)
{
if (values[j] >= intervals_min[i] && values[j]<=intervals_max[i])
{
abs_freq[i]++;
}
}
}
return abs_freq;
}
根據我的測試,數組abs_freq [i]正在存儲所要存儲的內容,現在的問題是我需要將此數組傳遞到main()中。 我嘗試了類似的方法,但是正如我所期望的,它僅傳遞了abs_freq的第一個值:
int main(){
Data data;
int *absolute_freq = new int[num_intervals]();
...
for (int i = 0; i < num_intervals; i++)
{
absolute_freq[i] = *data.Absolute_frequency();
}
for (int i = 0; i < num_intervals; i++)
{
printf("Absolute frequency interval %d: %d \n", i+1,absolute_freq[i]);
}
....
}
如何存儲整個數組而不是僅存儲第一個值?
您可以通過在main
函數中具有一個指針變量來完成此操作,然后使用該函數返回的指針對其進行初始化:
int* absolute_freq = data.Absolute_frequency();
請記住,一旦處理完數組,就必須delete[]
它。
在代碼for (int i = 0; i < num_intervals; i++) { absolute_freq[i] = *data.Absolute_frequency() ...
,調用函數Absolute_frequency
連連,每次創建一個整數的新陣列(其你不自由)。 此外, *data.Absolute_frequency()
等效於data.Absolute_frequency()[0]
,即,它始終為您提供數組中的第一個條目。
不確定您實際要實現什么; 但我想以下代碼會更好:
int *absolute_freq = data.Absolute_frequency();
for (int i = 0; i < num_intervals; i++)
{
printf("Absolute frequency interval %d: %d \n", i+1,absolute_freq[i]);
}
delete[] absolute_freq;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.