4

構造のマップを含む構造を含むマップを作成するための以下のコードがあります。私の質問は、メモリ リークを残さずに providerMap から要素を削除する方法です。providerMap[prov_id].erase() を実行できますか、それとも 2 番目またはより複雑な削除を実行する必要がありますか?

struct uriPrivs {
    std::string name;
    uchar properties;
};
struct providerValues {
    int KeepAlive;
    std::map<std::string /*uri*/, uriPrivs> uris;
};
std::map<std::string /*prov_id*/, providerValues> providerMap;

RISStorageManager::risStorageResponse RISStorageManager::update_provider(const std::string &prov_id, int KeepAlive) {

    if (providerMap.find(prov_id) == providerMap.end()) {
        providerValues x;
        x.KeepAlive = KeepAlive;
        providerMap[prov_id] = x;
        return risStorageCreated;
    } else {
        providerMap[prov_id].KeepAlive = KeepAlive;
        return risStorageUpdated;
    }
}
RISStorageManager::risStorageResponse RISStorageManager::update_uri(const std::string &prov_id, std::map<std::string, uriPrivs> &uris) {
    providerMap[prov_id].uris = uris;
}
4

1 に答える 1