2

我想知道如何释放 std::unordered_set 占用的内存?

我认为 unordered_set::clear() 只是清除集合而不释放内存。

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

谢谢

4

3 回答 3

2

清除 an 内存的常用方法与unordered_set任何标准容器相同:

set = std::unordered_set<T>()

您还可以使用:

std::unordered_set<T>().swap(set)

这是在 r-value refs 之前的日子里从容器中释放内存的常用方法。

您应该替换T为集合中包含的对象的类型。

于 2011-11-12T03:12:15.017 回答
2

unordered_set如果它在堆栈上,则自动释放它占用的内存:

void some_function()
{
    unordered_set<int> set;
    // use the set
} // set memory will be deallocated automatically here
于 2011-11-12T03:34:16.693 回答
0

该集合是一个基于节点的容器,因此节点的内存确实得到了适当的释放。但是由于哈希表可能已经增长到许多桶,您可以尝试rehash(1)再次使其更小——但这只是一个提示;该集合不需要减少存储桶的数量。

于 2011-11-12T03:13:19.467 回答