Ответ 1
Это означает что-то вроде этого:
std::vector<Movie *> movies;
Затем вы добавляете к вектору при чтении строк:
movies.push_back(new Movie(...));
Не забудьте удалить все объекты Movie*
, как только вы закончите с этим вектором.
Для моей последней домашней работы в CS я должен создать класс под названием Movie, который содержит название, режиссер, год, рейтинг, актеры и т.д.
Затем мне нужно прочитать файл, который содержит список этой информации и сохранить его в векторе указателей на фильмы.
Я не уверен, что означает последняя строка. Означает ли это, что я читаю файл, создаю несколько объектов Movie. Затем сделайте вектор указателей, где каждый элемент (указатель) указывает на один из этих объектов Movie?
Я просто создаю два вектора - один из указателей и один из фильмов и сделаю взаимно однозначное отображение двух векторов?
Это означает что-то вроде этого:
std::vector<Movie *> movies;
Затем вы добавляете к вектору при чтении строк:
movies.push_back(new Movie(...));
Не забудьте удалить все объекты Movie*
, как только вы закончите с этим вектором.
Насколько я понимаю, вы создаете класс Movie:
class Movie
{
private:
std::string _title;
std::string _director;
int _year;
int _rating;
std::vector<std::string> actors;
};
и имея такой класс, вы создаете векторный экземпляр:
std::vector<Movie*> movies;
поэтому вы можете добавить любой фильм в свою коллекцию фильмов. Поскольку вы создаете вектор указателей на фильмы, не забудьте освободить ресурсы, выделенные экземплярами вашего фильма, или вы можете использовать некоторый умный указатель для автоматического освобождения фильмов:
std::vector<shared_ptr<Movie>> movies;
Я не уверен, что означает последняя строка. Означает ли это, что я читаю файл, создаю несколько Объекты фильма. Затем сделайте вектор указателей, где каждый элемент (указатель) указывает на один из этих объектов Movie?
Я бы предположил, что это то, что предназначено. Предполагается, что вы читаете данные для одного фильма, выделяете объект с помощью new
, заполняете объект данными и затем нажимаете адрес данных на vector
(возможно, не лучший дизайн, но скорее всего, то, что предназначено в любом случае).
Динамически выделяя объект Movie с помощью new Movie()
, вы получаете указатель на новый объект. Вам не нужен второй вектор для фильмов, просто сохраните указатели, и вы можете получить к ним доступ. Как писал Брайан, вектор будет определяться как
std::vector<Movie *> movies
Но имейте в виду, что после этого вектор не удалит ваши объекты, что приведет к утечке памяти. Это, вероятно, не имеет значения для вашей домашней работы, но обычно вы должны удалять все указатели, когда они вам больше не нужны.