我想知道如何释放内存std :: unordered_set花了吗?
我认为unordered_set :: clear()只是清除了这个集合而没有释放内存。
我需要释放本地函数的unordered_set hold。每次调用本地函数时,都会占用一些内存,所以我需要在本地函数结束时释放它。
谢谢
答案 0 :(得分:2)
清除unordered_set
内存的常用方法与任何标准容器相同:
set = std::unordered_set<T>()
您也可以使用:
std::unordered_set<T>().swap(set)
这是在r值引用前几天从容器中释放内存的常用方法。
您应该将T
替换为集合中包含的对象类型。
答案 1 :(得分:1)
unordered_set
会自动释放堆栈中所占用的内存:
void some_function()
{
unordered_set<int> set;
// use the set
} // set memory will be deallocated automatically here
答案 2 :(得分:0)
该集合是一个基于节点的容器,因此节点的内存确实可以正常释放。但是由于哈希表可能已经增长到许多桶,你可以尝试rehash(1)
使其再次变小 - 但这只是一个提示;该集合不需要减少桶的数量。