構造のマップを含む構造を含むマップを作成するための以下のコードがあります。私の質問は、メモリ リークを残さずに 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;
}