【发布时间】:2015-07-14 16:03:26
【问题描述】:
我有一个键/值指针映射:
std::map<A*, B*> myMap;
什么是仅释放密钥记忆的正确方法?
我正在考虑这样做:
for (auto itr = _myMap.begin(); itr != _myMap.end(); itr++)
{
if (certainCondition == true)
{
delete itr->first;
itr->first = nullptr;
}
}
这是正确的做法吗?我的地图是否会保留nullptr 作为键,并且未来的迭代将包括nullptr?
【问题讨论】:
-
释放所有键后你打算如何处理地图?
-
把所有的key都删掉,map有什么用?
-
在修改密钥之前,您必须从
map中删除元素(否则您有 UB)。 -
我不知道你在试图做什么,但是当你开始尝试就地修改标准地图的钥匙时,汽车就翻车了悬崖。
-
std::map<std::unique_ptr<A>, B*>似乎更合适。
标签: c++ pointers dictionary delete-operator