小编Mel*_*vin的帖子

C++删除地图中的指针

使用地图中的指针删除堆项目

我有这张地图:

map<string, Plaats*> plaatsen;
Run Code Online (Sandbox Code Playgroud)

在一个函数中,我将这个地方添加到这个地图:

Plaats * fromPlace = new Plaats(from);
Plaats * toPlace = new Plaats(to);
auto insertedFrom = plaatsen.insert(pair<string,Plaats*>(from,fromPlace));
auto insertedTo = plaatsen.insert(pair<string,Plaats*>(to,toPlace));
//delete from or to if they are not inserted
if(!insertedFrom.second){
    delete fromPlace;
}
if(!insertedTo.second){
    delete toPlace;
}
Run Code Online (Sandbox Code Playgroud)

如果元素添加到我的地图中,我需要在析构函数中删除它.

KortstePad::~KortstePad(){
    //delete every item in plaatsen
    for(pair<string,Plaats*> place : plaatsen){
        //Plaats *p = place.second;
        delete place.second;
        place.second = nullptr;
    }

    for(pair<string,Plaats*> place : plaatsen){
        Plaats *p = place.second;
        cout << (p == nullptr) << endl;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ heap pointers c++11

2
推荐指数
1
解决办法
926
查看次数

标签 统计

c++ ×1

c++11 ×1

heap ×1

pointers ×1