我正在使用一个地图来存储一个键值对(int和class),方法如下:
```
map myMap;
```
#include <iostream>
#include <utility>
#include <map>
using namespace std;
class abstractclass{...};
class derivedclass : public abstractclass{...};
typedef map<int,abstractclass*> dBase;
int main(){
dBase db;
db.insert(pair<int,abstractclass*>(123,new derivedclass));
db.insert(pair<int,abstractclass*>(124,new derivedclass));
}
如何释放已分配的内存?
我需要能够使用insert
方法来插入用户定义的次数,因此最好有一种可以删除每个数据库条目的方法,谢谢!
如果有一种不使用内存分配的方法也很有用。
for(dbIT = db.begin(); dbIT != db.end();++dbIT){ delete dbIT->second; }
其中 dbIT 是dBase::iterator dbIT
。 - Eduardoinsert
可能会抛出异常,因此你需要编写异常安全的代码,只有在插入失败时才会删除你new
的对象,可以使用智能指针或try/catch
,这会使代码变得更加复杂)。 - syam