如何释放unordered_set的内存?

时间:2011-11-12 02:55:42

标签: c++ free unordered-set

我想知道如何释放内存std :: unordered_set花了吗?

我认为unordered_set :: clear()只是清除了这个集合而没有释放内存。

我需要释放本地函数的unordered_set hold。每次调用本地函数时,都会占用一些内存,所以我需要在本地函数结束时释放它。

谢谢

3 个答案:

答案 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)使其再次变小 - 但这只是一个提示;该集合不需要减少桶的数量。