C++指针向量

xbo*_*nez 23 c++

对于我最新的CS作业,我需要创建一个名为Movie的课程,其中包括标题,导演,年份,评级,演员等.

然后,我需要读取一个包含此信息列表的文件,并将其存储在指向电影的指针向量中.

我不确定最后一行是什么意思.这是否意味着,我读取文件,创建多个Movie对象.然后创建一个指针向量,其中每个元素(指针)指向其中一个Movie对象?

我只做两个向量 - 一个指针和一个电影,并对这两个向量进行一对一的映射?

Bri*_*ndy 43

它意味着这样的事情:

std::vector<Movie *> movies;
Run Code Online (Sandbox Code Playgroud)

然后在读取行时添加到向量:

movies.push_back(new Movie(...));
Run Code Online (Sandbox Code Playgroud)

Movie*完成向量后,请记住删除所有对象.


eba*_*onp 11

据我所知,你创建了一个Movie类:

class Movie
{
private:
  std::string _title;
  std::string _director;
  int         _year;
  int         _rating;
  std::vector<std::string> actors;
};
Run Code Online (Sandbox Code Playgroud)

有这样的类,你创建一个矢量实例:

std::vector<Movie*> movies;
Run Code Online (Sandbox Code Playgroud)

因此,您可以将任何电影添加到电影收藏中.由于您正在创建指向电影的指针向量,因此不要忘记释放电影实例分配的资源,或者您可以使用一些智能指针自动取消分配电影:

std::vector<shared_ptr<Movie>> movies;
Run Code Online (Sandbox Code Playgroud)

  • 或者甚至更好地使用`std :: vector <std :: unique_ptr <Movie >>`如果向量是唯一保持`Movie`对象生命周期的对象 (2认同)