gpt4 book ai didi

c++ - 动态内存分配,C++

转载 作者:太空狗 更新时间:2023-10-29 19:46:38 25 4
gpt4 key购买 nike

我需要编写一个可以读取文件的函数,并将所有唯一的单词添加到一个动态分配的数组中。我知道如何创建一个动态分配的数组,例如,如果您要询问数组中的条目数:

int value;
cin >> value;
int *number;
number = new int[value];

我的问题是我无法提前知道文件中将包含多少个唯一的单词,所以我不能一开始就只读取值或请求它。另外,我需要使用数组而不是 vector 来完成这项工作。有没有办法使用动态分配的数组来执行类似于 push_back 的操作?

现在,我唯一能想到的就是首先创建一个数组来存储文件中的所有单词 (1000),然后让它遍历它并找到唯一单词的数量。然后使用该值创建一个动态分配的数组,然后我将再次传递该数组以存储所有唯一的单词。显然,对于应该有更有效解决方案的东西来说,这个解决方案听起来有点过分了。

有人能给我指出正确的方向吗,至于是否有更好的方法?我觉得用 vector 来做这件事会很容易,所以我认为要求它是一个数组有点愚蠢(除非我需要在这个家庭作业中学习一些关于动态分配数组的重要事情)。

编辑:这是另一个问题。我知道文件中将有 1000 个单词,但我不知道会有多少个独特的单词。这是一个想法。我可以创建一个包含 1000 个元素的数组,将所有唯一的单词写入该数组,同时跟踪我已经完成了多少。完成后,我可以提供一个动态分配一个具有该计数的新数组,然后将单词从初始数组复制到第二个数组。不确定这是否是最有效的,但由于我们无法使用 vector ,我认为效率不是这项任务中的一个大问题。

最佳答案

vector 确实比数组更适合这种情况。真的。

但是如果你必须使用数组,你至少可以让它表现得像一个 vector :-)。

方法如下:为数组分配一些容量。将分配的容量存储在“容量”变量中。每次添加到数组时,增加一个单独的“长度”变量。当您要向数组添加一些内容并发现它不够大(长度 == 容量)时,分配第二个更长的数组,然后将原始数组的内容复制到新数组,最后释放原始数组。

这给了你能够增长数组的效果。如果性能成为一个问题,一次增加一个以上的元素。

恭喜,完成这些简单的步骤后,您已经在数组上实现了一小部分 std::vector 功能!

关于c++ - 动态内存分配,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050748/

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