c++ - 释放一对 vector 中对象的内存

标签 c++ iterator delete-operator std-pair

我想知道如何取消分配一对 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/

相关文章:

c++ - 只移动迭代器一次

c++ - 如果 A 有析构函数,什么时候 std::unique_ptr<A> 需要一个特殊的删除器?

c++ - 将 cin 用于 char 数组

c++ - C++ 程序的退出状态 -1

c++ - 错误: expected constructor, destructor, or type conversion before ';' token

c# - LINQ 迭代器异常处理

java - Java 中的迭代器

c++ - 标量删除析构函数

c++ - 为什么我必须在 "original"指针上调用 delete?

c++ - MySQL C++ 连接器 - 链接错误