Мне нужно написать функцию, которая может читать файл, и добавить все уникальные слова в динамически распределяемый массив. Я знаю, как создать динамически размещенный массив, если, например, вы запрашиваете количество записей в массиве:
int value;
cin >> value;
int *number;
number = new int[value];
Моя проблема в том, что я заранее не знаю, сколько уникальных слов будет в файле, поэтому я не могу сначала просто прочитать значение или попросить его. Кроме того, мне нужно сделать эту работу с массивами, а не с векторами. Есть ли способ сделать что-то похожее на push_back с использованием динамически распределенного массива?
Прямо сейчас, единственное, что я могу придумать, - это сначала создать массив, в котором хранятся ВСЕ слова в файле (1000), затем пройти через него и найти количество уникальных слов. Затем используйте это значение для создания динамически распределенного массива, который я затем передам снова, чтобы сохранить все уникальные слова. Очевидно, что это решение звучит довольно заурядно для чего-то, что должно иметь более эффективное решение.
Может ли кто-нибудь указать мне правильное направление относительно того, есть ли лучший путь? Я чувствую, что это было бы довольно легко сделать с векторами, поэтому я думаю, что глупо требовать, чтобы он был массивом (если нет какой-то важной вещи, которую мне нужно узнать о динамически размещаемых массивах в этом домашнем задании).
РЕДАКТИРОВАТЬ: Вот еще один вопрос. Я знаю, что в файле будет 1000 слов, но я не знаю, сколько будет уникальных слов. Вот идея. Я мог бы создать массив из 1000 элементов, записать все уникальные слова в этот массив, отслеживая, сколько я сделал. Как только я закончил, я мог бы обеспечить динамическое выделение нового массива с этим счетчиком, а затем просто скопировать слова из исходного массива во второй. Не уверен, что это наиболее эффективно, но поскольку у нас нет возможности использовать векторы, я не думаю, что эффективность является серьезной проблемой в этом задании.