簡體   English   中英

如何在指針向量中釋放元素?

[英]How to deallocate an element in a vector of pointers?

所以我有一個像這樣的指針向量:

vector<Example*> ve;

我用這樣的指針填充這個向量

Example* e = new Example();
ve.push_back(e)

但是當我想刪除它們時,我如何確保它們被取消分配? 這夠了嗎?

ve.erase(ve.begin() + 1)
delete ve[1]

當然,你必須反過來這樣做:

delete ve[1];
ve.erase(ve.begin() + 1);

但是,在表達所有權時,最好使用智能指針(例如std::unique_ptr )而不是原始指針。

您必須在刪除向量之前刪除指針:

for (vector<Example *>::iterator it = vec.begin(); it != vec.end(); it++) {
    delete *it;
}

vec.clear();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM