gpt4 book ai didi

c++ - 动态和静态分配的数组元素计算?

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:01 24 4
gpt4 key购买 nike

<分区>

有什么方法可以计算动态分配数组中元素的数量吗?使用静态分配的数组没有用(它给我堆栈溢出错误),因为我需要分配一个缓冲区大小来存储 100,000 个 double 值(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)即我们为 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;

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com