我想知道如何释放 std::unordered_set 占用的内存?
我认为 unordered_set::clear() 只是清除集合而不释放内存。
我需要释放本地函数持有的 unordered_set 。每次调用本地函数都会消耗一些内存,所以我需要在本地函数结束时释放它。
谢谢
我想知道如何释放 std::unordered_set 占用的内存?
我认为 unordered_set::clear() 只是清除集合而不释放内存。
我需要释放本地函数持有的 unordered_set 。每次调用本地函数都会消耗一些内存,所以我需要在本地函数结束时释放它。
谢谢
清除 an 内存的常用方法与unordered_set
任何标准容器相同:
set = std::unordered_set<T>()
您还可以使用:
std::unordered_set<T>().swap(set)
这是在 r-value refs 之前的日子里从容器中释放内存的常用方法。
您应该替换T
为集合中包含的对象的类型。
unordered_set
如果它在堆栈上,则自动释放它占用的内存:
void some_function()
{
unordered_set<int> set;
// use the set
} // set memory will be deallocated automatically here
该集合是一个基于节点的容器,因此节点的内存确实得到了适当的释放。但是由于哈希表可能已经增长到许多桶,您可以尝试rehash(1)
再次使其更小——但这只是一个提示;该集合不需要减少存储桶的数量。