我想知道如何取消分配一对 vector 中对象的内存。
vector< pair<int, object*> > vectorObject;
我曾尝试使用迭代器遍历所有元素,但我不确定如何删除一对中的对象。
for (vector< pair<int, object*> >::iterator it = vectorObject.begin(); it != vectorObject.end(); ++it) {
// delete?
}
希望有好心人指教!
最佳答案
`直接的答案是:
for (vector< pair<int, object*> >::iterator it = vectorObject.begin(); it != vectorObject.end(); ++it) {
delete it->second;
}
但是。你可能不应该这样做。
拥有不受管理的指针是一个坏主意。您应该更改 vector 的类型以使用 std::unique_ptr
。
vector< pair<int, std::unique_ptr<object>>> vectorObject;
这是因为手动删除对象很容易出错,除非您采取保护措施(通过 uisng RAII)不是异常安全。
关于c++ - 释放一对 vector 中对象的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407285/