我需要编写一个函数,能够读取文件,并将所有唯一的单词添加到动态分配的数组中。如果您要求数组中条目的数量,我知道如何创建动态分配的数组:
我的问题是我无法事先知道文件中有多少个不同的单词,因此我不能一开始就读取或请求它。另外,我需要让这个程序使用数组而不是向量。是否有一种类似于使用动态分配数组进行push_back的方法?
目前,我唯一能想到的是首先创建一个存储文件中所有单词(1000)的数组,然后通过它找到唯一单词的数量。然后使用该值创建一个动态分配的数组,然后再次通过它来存储所有唯一单词。显然,这个解决方案听起来非常复杂,应该有更有效的解决方案。
有人可以指点我正确的方向吗?我觉得这应该很容易用向量完成,所以我认为要求使用数组有点傻(除非在这个作业任务中需要学习有关动态分配数组的重要内容)。
编辑:这里又有一个问题。我知道文件中将有1000个单词,但是我不知道有多少个唯一的单词。我的想法是,我可以创建一个1000个元素的数组,将所有唯一单词写入该数组,并跟踪我完成了多少个。完成后,我可以根据该计数来提供一个动态分配的新数组,然后只需将单词从初始数组复制到第二个数组即可。不确定这是否是最有效的方法,但由于我们不能使用向量,因此我认为效率在这个任务中不是一个很大的问题。
int value;
cin >> value;
int *number;
number = new int[value];
我的问题是我无法事先知道文件中有多少个不同的单词,因此我不能一开始就读取或请求它。另外,我需要让这个程序使用数组而不是向量。是否有一种类似于使用动态分配数组进行push_back的方法?
目前,我唯一能想到的是首先创建一个存储文件中所有单词(1000)的数组,然后通过它找到唯一单词的数量。然后使用该值创建一个动态分配的数组,然后再次通过它来存储所有唯一单词。显然,这个解决方案听起来非常复杂,应该有更有效的解决方案。
有人可以指点我正确的方向吗?我觉得这应该很容易用向量完成,所以我认为要求使用数组有点傻(除非在这个作业任务中需要学习有关动态分配数组的重要内容)。
编辑:这里又有一个问题。我知道文件中将有1000个单词,但是我不知道有多少个唯一的单词。我的想法是,我可以创建一个1000个元素的数组,将所有唯一单词写入该数组,并跟踪我完成了多少个。完成后,我可以根据该计数来提供一个动态分配的新数组,然后只需将单词从初始数组复制到第二个数组即可。不确定这是否是最有效的方法,但由于我们不能使用向量,因此我认为效率在这个任务中不是一个很大的问题。
std::vector
, 我会感到惊讶。必须练习处理那些数组!;-) - Victor Zamanian