[英]C++ Vector of pointers
對於我最新的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對象。 然后創建一個指針向量,其中每個元素(指針)指向其中一個Movie對象?
我猜這是預期的。 意圖可能是你讀取一部電影的數據,用new
分配一個對象,用數據填充對象,然后將數據的地址推送到vector
(可能不是最好的設計,但很可能是預期的無論如何)。
通過使用new Movie()
動態分配Movie對象,您將獲得指向新對象的指針。 電影不需要第二個矢量,只需存儲指針即可訪問它們。 就像Brian寫的那樣,矢量將被定義為
std::vector<Movie *> movies
但請注意,向量將不會刪除您的對象,這將導致內存泄漏。 它可能與你的作業無關,但通常你應該刪除所有指針,當你不再需要它們時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.