gpt4 book ai didi

c++ - 如果我想在执行过程中将其内存减少一半,我可以使用哪种数据结构

转载 作者:行者123 更新时间:2023-11-30 20:53:02 24 4
gpt4 key购买 nike

我想要将数据结构包含的元素数量减半。我必须多次这样做。问题与此类似:我有“n”个已排序的整数,并且必须将连续的两个数字相加。因此我剩下的整数数量是n/2。我必须循环这个直到得到一个数字。 (我简化了问题,我必须同时进行其他操作)

我想尝试一个大小为 n 的数组,然后想我将创建一个大小为 n/2 的数组并填充这个新数组,最后将释放原始数组(使用指针创建)。请注意,我还必须存储每次循环评估的数据。

如果我无法解释,请引用这个问题 MIXTURE

最佳答案

使用指向用malloc(或calloc,或类似)分配的内存的指针,然后使用realloc调整其大小:

int main()
{
int* myArray = malloc(50 * sizeof(int)); // gets you 50 integers
// perform operations on myArray, accessing it like myArray[3]
int* r = realloc(myArray, 25 * sizeof(int));
if (r) {
myArray = r;
}
// perform some more operations.
free(myArray); // free the memory once you are done with it
}

realloc 返回一个新指针,该指针指向与之前传递的指针内容相同的内存。像这样将结果分配回 myArray 以获得所需的行为,当您不再需要该数组时,请对其调用 free ,就像您通常所做的那样,如果您还没有重新分配它。

关于c++ - 如果我想在执行过程中将其内存减少一半,我可以使用哪种数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884645/

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