【发布时间】:2020-04-23 21:17:17
【问题描述】:
我有一个 int 和 string 的无序映射,通过引用将值插入其中。我想从映射中删除一些元素并减少使用的 malloc 内存,但我看不到内存减少。 是否可以使用擦除来减少 malloc 内存?擦除后 rehash 会有所帮助吗?
typedef typename std::unordered_set<N> ChangeObjSet;
ChangeObjSet _changeObjSet;
template <class N>
void MdmNameCacheImplMIWithStripEscape<N>::insertChangedStatus(const N &obj)
{
_changeObjSet.insert(obj);
}
typename ChangeObjSet::iterator it = _changeObjSet.begin();
for(;it != _changeObjSet.end();)
{
auto s = it;
it++;
_changeObjSet.erase(s);
}
【问题讨论】:
-
“我看不到内存减少”这是什么意思?您如何看待减少?
-
如果您可以向我们展示一些代码,例如地图的定义以及如何插入元素,甚至是一个最小的可重现示例,问题可能会更清楚。
-
@churill 添加代码
-
@foreknownas_463035818 删除某些元素后减少 malloc 内存
-
这是什么意思?使用地图时不涉及
malloc(至少不可见)
标签: c++ stl unordered-map erase