所以我有一个像这样的指针向量:
vector<Example*> ve;
我用这样的指针填充这个向量
Example* e = new Example();
ve.push_back(e)
但是当我想删除它们时,我如何确保它们被取消分配? 这够了吗?
ve.erase(ve.begin() + 1)
delete ve[1]
答案 0 :(得分:8)
当然,你必须反过来这样做:
delete ve[1];
ve.erase(ve.begin() + 1);
但是,在表达所有权时,使用智能指针(例如std::unique_ptr
)而不是原始指针更为可取。
答案 1 :(得分:1)
你必须删除之前删除指针
for (vector<Example *>::iterator it = vec.begin(); it != vec.end(); it++) {
delete *it;
}
vec.clear();