C++ 如何使类函数返回数组,然后调用它并将其存储在main中

C++ 如何使类函数返回数组,然后调用它并将其存储在main中,c++,arrays,class,C++,Arrays,Class,在这个程序中,我被要求处理存储在file.txt中的一定数量的值 我有一个类,它有一个名为Absolute_frequency的公共函数,返回一个指向在名为abs_freq[]的函数中创建的数组的指针。我的问题是,我现在需要将这个数组保存到我的main中的另一个数组中 int *Data::Absolute_frequency() { /*Here I created 2 arrays that store values representing max and min limit of c

在这个程序中,我被要求处理存储在file.txt中的一定数量的值

我有一个类,它有一个名为Absolute_frequency的公共函数,返回一个指向在名为abs_freq[]的函数中创建的数组的指针。我的问题是,我现在需要将这个数组保存到我的main中的另一个数组中

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;
}
int*数据::绝对频率(){
/*在这里,我创建了两个数组来存储表示最大和最小限制的值
一定间隔(如0到20、21到40、41到60等)
然后我通过每个间隔运行我的代码,并计算有多少间隔
值在其中,并存储在abs_freq[]中:*/
int*abs_freq=新的int[num_间隔]();
对于(int j=0;j如果(values[j]>=interval\u min[i]&&values[j]您可以通过在
main
函数中使用指针变量来实现,并使用该函数返回的指针对其进行初始化:

int* absolute_freq = data.Absolute_frequency();

请记住,使用完数组后,必须
删除[]
它。

main
函数中使用指针变量,然后使用函数返回的指针对其进行初始化:

int* absolute_freq = data.Absolute_frequency();
记住,一旦你处理完数组,你必须
删除它。

在你的代码中
for(int i=0;i
,你反复调用函数
absolute\u frequency
,每次创建一个新的整数数组(你不释放)。此外,
*data.Absolute\u frequency()
相当于
data.Absolute\u 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;
int*absolute\u freq=data.absolute\u frequency();
对于(int i=0;i
在代码
中,对于(inti=0;i
,您一次又一次地调用函数
absolute\u frequency
,每次都创建一个新的整数数组(不释放)。此外,
*data.absolute\u 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;
int*absolute\u freq=data.absolute\u frequency();
对于(int i=0;i
如果您在编译时不知道大小,请使用
std::vector
,否则使用
std::array
。如果您需要C的答案,请这样标记。如果您在编译时不知道大小,请使用
std::vector
,否则使用
std::array
。如果您需要C的答案,请这样标记。